383.赎金信
哈希解法
题目中说明只有小写字母,那我们可以采取用时间换空间的策略,用一个长度为26的数组来记录magazine中字母出现的次数
然后再用ransomNote去验证这个数组是否包含了ransomNote所需要的所有字母
依然是数组在哈希法中的应用
不了解的可以去看我这一篇例题,讲解了哈希法在数组中的映射使用
http://t.csdn.cn/Z8WrQ
public boolean canConstruct(String ransomNote, String magazine) {
int[]record = new int[26];
//如果ransomNote比magazine的长度大的话,肯定直接返回false了
if(ransomNote.length()>magazine.length()){
return false;
}
//通过record数组记录magazine中各个字符出现的次数
for(char c : magazine.toCharArray()){
record[c-'a']++;
}
for(char c : ransomNote.toCharArray()){
record[c-'a']--;
if(record[c-'a']<0){
return false;
}
}
return true;
}