全量和已占用字符集 、字符串统计
题目描述: 全量和已占用字符集 、字符串统计
给定两个字符集合,一个是全量字符集,一个是已占用字符集,已占用字符集中的字符不能再使用。
要求输出剩余可用字符集。
输入描述
输入一个字符串 一定包含@,@前为全量字符集 @后的为已占用字符集
已占用字符集中的字符一定是全量字符集中的字符
字符集中的字符跟字符之间使用英文逗号隔开
每个字符都表示为字符+数字的形式用英文冒号分隔,比如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
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();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~