解法一:
public class Solution {
//题目要求判断字符串magazine的某些字符能够组成字符串ransomNote
//所以用一个Map来存储,判断计数即可
public boolean canConstruct(String ransomNote, String magazine) {
HashMap<Character, Integer> mapR = new HashMap<>();
HashMap<Character, Integer> mapM = new HashMap<>();
//统计字符串ransomNote的Map
for(int i = 0; i < ransomNote.length(); i++){
char c = ransomNote.charAt(i);
if(mapR.containsKey(c)){
mapR.put(c, mapR.get(c) + 1);
}
else{
mapR.put(c, 1);
}
}
//统计字符串magazine的Map
for(int i = 0; i < magazine.length(); i++){
char c = magazine.charAt(i);
if(mapM.containsKey(c)){
mapM.put(c, mapM.get(c) + 1);
}
else{
mapM.put(c, 1);
}
}
//遍历mapR,看mapM中是否有满足条件的...
Iterator<Character> iterator = mapR.keySet().iterator();
while(iterator.hasNext()){
char c = iterator.next();
if(!mapM.containsKey(c)){
return false;
}
else{
if(mapR.get(c) > mapM.get(c)){//超过的话mapM就不能提供了
return false;
}
}
}
return true;
}
}