给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
如果可以,返回 true ;否则返回 false 。
magazine 中的每个字符只能在 ransomNote 中使用一次。
java
class Solution {
public boolean canConstruct(String ransomNote, String magazine) {
HashMap<Character,Integer> hm = new HashMap<>();
for(int i=0;i<magazine.length();i++){
char a = magazine.charAt(i);
if(hm.containsKey(a))
hm.put(a, hm.get(a)+1);
else
hm.put(a,0);
}
for(int i=0; i<ransomNote.length(); i++){
char b = ransomNote.charAt(i);
// hm不包含b, 返回false
if(!hm.containsKey(b))
return false;
// hm包含b, 若可使用次数不足, 返回false
if(hm.get(b)<0)
return false;
// hm包含b且可使用,更新可使用次数
hm.put(b, hm.get(b)-1);
}
return true;
}
}