学术会议地点统计问题
秘书统计张教授【以后简称 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
【输出顺序说明】输出按照城市地点简称字母升序排序
【输出内容说明】如果没有共同去过的城市,输出为 none 四个字母,两边均无空格
输入样例:
在这里给出一组输入。例如:
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
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
StringBuilder sb=new StringBuilder();
TreeMap<String,Integer> tm2=getMap(sc.nextLine());//tm2是z教授
TreeMap<String,Integer> tm1=getMap(sc.nextLine());//tm1是w教授
Set<String> strings1 = tm1.keySet();
Set<String> strings2 = tm2.keySet();
for (String string : strings1) {
if (strings2.contains(string)){
int num1=tm1.get(string);
int num2=tm2.get(string);
if (num1>num2){
sb.append("w:").append(string).append(" ").append(num1).append(",");
}else{
sb.append("z:").append(string).append(" ").append(num2).append(",");
}
}
}
if (sb.toString().equals("")) System.out.println("none");
else{
String[] split = sb.toString().split(",");
for (int i = 0; i < split.length; i++) {
System.out.print(split[i]);
if (i!=split.length-1) System.out.print(",");
}
}
sc.close();
}
public static TreeMap<String,Integer> getMap(String s){
TreeMap<String,Integer> tm2=new TreeMap<>();
String sss= s.replace(","," ");
String[] ss=sss.split(":");
String[] s1 = ss[1].split(" ");
for (int i1 = 0; i1 < s1.length; i1+=2) {
if (tm2.get(s1[i1])!=null){
tm2.put(s1[i1], tm2.get(s1[i1])+Integer.parseInt(s1[i1+1]));
}else{
tm2.put(s1[i1],Integer.parseInt(s1[i1+1]));
}
}
return tm2;
}
}