题目:
给你两个字符串:ransomNote
和 magazine
,判断 ransomNote
能不能由 magazine
里面的字符构成。
如果可以,返回 true
;否则返回 false
。
magazine
中的每个字符只能在 ransomNote
中使用一次。
思路:将magazine中的字母及次数用map存储,key=字母,value=该字母出现的次数。遍历ransomNote中的字母,若该字母出现在map中且值不为0,则值-1,否则返回false。
代码:
public boolean canConstruct(String ransomNote, String magazine) {
Map<Character,Integer> map=new HashMap<>();
for(char c:magazine.toCharArray()){
map.put(c,map.getOrDefault(c,0)+1);
}
for(char c:ransomNote.toCharArray()){
if(!map.containsKey(c)||map.get(c)==0){
return false;
}
else{
map.put(c,map.get(c)-1);
}
}
return true;
}