全量和已占用字符集 、字符串统计

题目描述: 全量和已占用字符集 、字符串统计
给定两个字符集合,一个是全量字符集,一个是已占用字符集,已占用字符集中的字符不能再使用。
要求输出剩余可用字符集。

输入描述
输入一个字符串 一定包含@,@前为全量字符集 @后的为已占用字符集
已占用字符集中的字符一定是全量字符集中的字符
字符集中的字符跟字符之间使用英文逗号隔开
每个字符都表示为字符+数字的形式用英文冒号分隔,比如a:1标识一个a字符
字符只考虑英文字母,区分大小写
数字只考虑正整型 不超过100
如果一个字符都没被占用 @标识仍存在,例如 a:3,b:5,c:2@
输出描述
输出可用字符集
不同的输出字符集之间用回车换行
注意 输出的字符顺序要跟输入的一致,如下面用例不能输出b:3,a:2,c:2
如果某个字符已全部占用 则不需要再输出
用例
输入

a:3,b:5,c:2@a:1,b:2
输出

a:2,b:3,c:2

代码解析:
public static String occupyStrin() {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
StringBuffer sb = new StringBuffer();
String[] split = line.split("@");
if (split.length == 1) { // 后面没有字符集,全量输出
System.out.println(split[0]);
} else {
// 前后对比
String s1 = split[0];
String s2 = split[1];
String[] ss1 = s1.split(",");
List keys = new ArrayList<>();
Map<String, Integer> s1Map = new HashMap<>();
Map<String, Integer> s2Map = new HashMap<>();
for (int i = 0; i < ss1.length; i++) {
String[] sss1 = ss1[i].split("😊;
String key = sss1[0];
String value = sss1[1];
s1Map.put(key, Integer.parseInt(value));
keys.add(key);
}
String[] ss2 = s2.split(",");
for (int i = 0; i < ss2.length; i++) {
String[] sss2 = ss2[i].split("😊;
String key = sss2[0];
String value = sss2[1];
s2Map.put(key, Integer.parseInt(value));
}

    for (int i = 0; i < keys.size(); i++) {
        String key = keys.get(i);
        Integer value1 = s1Map.get(key);
        Integer value2 = s2Map.get(key) == null ? 0 : s2Map.get(key);
        if (i == keys.size() - 1) {
            sb.append(key + ":" + (value1 - value2));
        } else {
            sb.append(key + ":" + (value1 - value2) + ",");
        }
    }
}
return sb.toString();

}

posted @   vello  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示