import java.util.*;
import java.util.HashMap;
import java.util.Map;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param ransomNote string字符串
* @param magazine string字符串
* @return bool布尔型
*/
public boolean canConstruct (String ransomNote, String magazine) {
// write code here
if(magazine.length()<ransomNote.length()) {
return false;
}
HashMap<Character, Integer> map=new HashMap<>();
HashMap<Character, Integer> map2=new HashMap<>();
for (int i = 0; i < ransomNote.length(); i++) {
map.put(ransomNote.charAt(i), map.getOrDefault(ransomNote.charAt(i), 0)+1);
}
for (int i = 0; i < magazine.length(); i++) {
map2.put(magazine.charAt(i), map2.getOrDefault(magazine.charAt(i),0)+1);
}
for (Character c : map.keySet()) {
if(map2.containsKey(c)) {
if(map2.get(c)-map.get(c)<0) {
return false;
}
}else {
return false;
}
}
return true;
}
}
思路其实不难,拿两个哈希表来装这两个字符串中每个字符出现的字数,然后再遍历第一个哈希表的键,判断第二个哈希表是否包含该键,如果不包含就返回false;如果包含再判断第二个哈希表该键所对应的值是否足够,如果不足够就直接返回false;



京公网安备 11010502036488号