7-3 学术会议地点统计问题-hebust (20 分)
学术会议地点统计问题
秘书统计张教授【以后简称 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.awt.*;
import java.util.*;
import javax.swing.JPanel;
import java.io.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String sz = scan.nextLine();
String sw = scan.nextLine();
TreeMap<String, Integer> mapz = new TreeMap<>();
TreeMap<String, Integer> mapw = new TreeMap<>();
TreeMap<String, Integer> mapzz = new TreeMap<>();
TreeMap<String, Integer> mapww = new TreeMap<>();
sz = sz.substring(2);
sw = sw.substring(2);
String[] szz = sz.split(",");
String[] sww = sw.split(",");
for (String str : szz) {
String[] strr = str.split(" ");
if (mapz.containsKey(strr[0])) {
mapz.put(strr[0], mapz.get(strr[0]) + Integer.parseInt(strr[1]));
} else {
mapz.put(strr[0], Integer.parseInt(strr[1]));
}
}
for (String str : sww) {
String[] strr = str.split(" ");
if (mapw.containsKey(strr[0])) {
mapw.put(strr[0], mapw.get(strr[0]) + Integer.parseInt(strr[1]));
} else {
mapw.put(strr[0], Integer.parseInt(strr[1]));
}
}
boolean fg = false;
for (Map.Entry<String, Integer> entry : mapz.entrySet()) {
if (mapw.containsKey(entry.getKey())) {
fg = true;
if (entry.getValue() >= mapw.get(entry.getKey())) {
mapzz.put(entry.getKey(), entry.getValue());
} else {
mapww.put(entry.getKey(), mapw.get(entry.getKey()));
}
}
}
int i = 0;
int j = 0;
if (fg) {
if (mapzz.size() != 0) {
for (Map.Entry<String, Integer> entry : mapzz.entrySet()) {
System.out.print("z:");
System.out.print(entry.getKey() + " " + entry.getValue());
i++;
if (i != mapzz.size()) {
System.out.print(",");
}
}
}
if (mapzz.size() != 0 && mapww.size() != 0) {
System.out.print(",");
}
if (mapww.size() != 0) {
for (Map.Entry<String, Integer> entry : mapww.entrySet()) {
System.out.print("w:");
System.out.print(entry.getKey() + " " + entry.getValue());
j++;
if (j != mapww.size()) {
System.out.print(",");
}
}
}
} else {
System.out.println("none");
}
}
}