OD 机试题 磁盘容量
作者:互联网
1 import java.util.*; 2 3 // 注意类名必须为 Main, 不要有任何 package xxx 信息 4 public class Main { 5 public static void main(String[] args) { 6 Scanner in = new Scanner(System.in); 7 // 注意 hasNext 和 hasNextLine 的区别 8 // M G T 9 // 稳定排序 升序 10 /** 11 * 3 12 * 2G4M 13 * 3M2G 14 * 1T 15 */ 16 // 磁盘容量比较 考完才想起来该这么做 17 while (in.hasNext()) { // 注意 while 处理多个 case 18 int num = in.nextInt(); 19 String[] input = new String[num]; 20 HashMap<Integer, String> kvMap = new HashMap<>(); 21 for (int i = 0;i < num; i++) { 22 input[i] = in.next(); 23 String str = input[i]; 24 Integer outNumber = outNumber(str); 25 kvMap.put(outNumber, kvMap.getOrDefault(outNumber, "") + ";" + str); 26 } 27 // 库函数 解析处理 28 List<Map.Entry<Integer, String>> list = new ArrayList<Map.Entry<Integer, String>>(kvMap.entrySet()); 29 // 集合比较 30 Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() { 31 // 比较 32 @Override 33 public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) { 34 if (o1.getKey() < o2.getKey()) { 35 return -1; 36 } 37 return 0; 38 } 39 }); 40 // 排序完成 对应输出 41 for (Map.Entry<Integer, String> map:list) { 42 // 输出原输入 43 String[] strings = map.getValue().split(";"); 44 for (int i = 0; i < strings.length; i++) { 45 if (strings[i] != "") { 46 System.out.println(strings[i]); 47 } 48 } 49 } 50 } 51 } 52 53 /** 54 * 解析容量 55 * @param str 输入字符串 56 * @return M对应的容量 57 */ 58 private static int outNumber(String str) { 59 // 按照 TGM截断 60 String[] str1 = str.split("T|G|M"); 61 // System.out.println(Arrays.toString(str1)); 62 String[] str2 = str.split("[0-9]+"); 63 // System.out.println(Arrays.toString(str2)); 64 int sum = 0; 65 for (int i = 0; i < str1.length; i++) { 66 if ("T".equals(str2[i+1])) { 67 sum = sum + Integer.parseInt(str1[i]) * 1024 * 1024; 68 } 69 if ("G".equals(str2[i+1])) { 70 sum = sum + Integer.parseInt(str1[i]) * 1024; 71 } 72 if ("M".equals(str2[i+1])) { 73 sum = sum + Integer.parseInt(str1[i]); 74 } 75 } 76 return sum; 77 } 78 }
标签:试题,int,sum,OD,str,new,磁盘,str1,String 来源: https://www.cnblogs.com/supperlhg/p/16299880.html