7-42 学术会议地点统计问题-hebust (10 分)

33 篇文章 4 订阅

学术会议地点统计问题

秘书统计张教授【以后简称 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;
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值