两个字符串A、B,代表A盒与B盒中的乒乓球,每个乒乓球用一个大写字母表示,即相同类型的乒乓球为相同的大写字母. 如果B盒中所有球的类型在A中都有,并且每种球的数量都不大于A,则输出“Yes”;否则输出“No”.
思路: 借助 map 统计出每个盒子中的每种球的类别和数目. 然后遍历其中的一个 map 和另外一个 map 进行对比即可.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
Map<Character, Integer> A = new HashMap<>();
Map<Character, Integer> B = new HashMap<>();
String s1 = sc.next();
String s2 = sc.next();
for (int i = 0; i < s1.length(); i++) {
if (A.containsKey(s1.charAt(i))) {
A.put(s1.charAt(i), A.get(s1.charAt(i)) + 1);
} else {
A.put(s1.charAt(i), 1);
}
}
for (int j = 0; j < s2.length(); j++) {
if (B.containsKey(s2.charAt(j))) {
B.put(s2.charAt(j), B.get(s2.charAt(j)) + 1);
} else {
B.put(s2.charAt(j), 1);
}
}
int flag = 0;
for (char c : B.keySet()) {
if (!A.containsKey(c)) {
flag = 1;
break;
} else {
if (A.get(c) < B.get(c)) {
flag = 1;
break;
}
}
}
if (flag == 1) {
System.out.println("No");
} else {
System.out.println("Yes");
}
}
}
}