学术会议地点统计问题 墨蓝 2023-01-04 14:42 129阅读 0赞 **问题描述:** 秘书统计张教授【以后简称 z 】和王教授【以后简称 w 】上一年度参加学术会议的情况,教授详细行程清单如下: z:bj 3,hz 2,qd 4,nj 5,wh 3,bj 3 w:hn 7,xm 6,bj 4,gz 6,wh 4 现在秘书需要完成以下统计工作。找出两位教授共同去过的城市,并找出住宿天数长的教授,按照如下格式输出: z:bj 6,w:wh 4 请同学们编写代码帮助搞定。 输入格式: 固定为2行 【数据说明】冒号前面为教授简称,冒号后面为会议详情,分组内使用空格分开,左边为城市地点简称,右边为住宿天数,多个分组之间使用逗号分开【以上字符均为西文】(测试数据经过专门处理,不存在共同去过的城市有相同天数的情况) 输出格式: 固定为1行 由0个或者多个记录组成,记录格式为: 教授简称 冒号 城市简称 空格 天数 多个记录之间使用逗号分开,最后一个记录末尾没有逗号 如果0个记录时,输出 none public class Solution { public static void main(String[] args) { omCity = getComCity(); getComCityMax(comCity); } private static ArrayList<String> getComCityMax(ArrayList<String> list){ int numa = 0; int numb = 0; Map<String, Integer> map1 = getMap("z:bj 3,hz 2,qd 4,nj 5,wh 3,bj 3"); Map<String, Integer> map2 = getMap("w:hn 7,xm 6,bj 4,gz 6,wh 4"); for(int i=0;i<list.size();i++){ numa = map1.get(list.get(i)); numb = map2.get(list.get(i)); if(numa < numb){ System.out.println("w:"+list.get(i)+" "+numb); }else{ System.out.println("z:"+list.get(i)+" "+numa); } } return null; } private static ArrayList<String> getComCity(){ ArrayList<String> list = new ArrayList<String>(); Map<String, Integer> map1 = getMap("z:bj 3,hz 2,qd 4,nj 5,wh 3,bj 3"); Map<String, Integer> map2 = getMap("w:hn 7,xm 6,bj 4,gz 6,wh 4"); for (Map.Entry<String,Integer> e:map1.entrySet()) { String key = e.getKey(); if(map2.containsKey(key)){ list.add(key); } } return list; } //得到map private static Map<String,Integer> getMap(String str1){ Map<String,Integer> map = new HashMap<>(); String[] split = str1.replace(':', ' ').replace(',', ' ').split(" "); //map.put(split[0],0); for(int i =0;i<split.length;i=i+2){ String k = split[i]; int v = (int)(split[i].charAt(0) - '0'); if(map.containsKey(k)){ Integer v_temp = map.get(k); map.put(k,v+v_temp); } else{ map.put(k,v); } } return map; } //打印map private static void print(Map<String,Integer> map){ for (Map.Entry<String,Integer> e:map.entrySet()) { String key = e.getKey(); Integer value = e.getValue(); System.out.println("key="+key+";value="+value); } System.out.println("----------------------------------"); } }
还没有评论,来说两句吧...