leetcode刷题
383. 赎金信
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int hash[26]={0};
for (int i=0;i<magazine.length();i++)
{
hash[magazine[i]-'a']++;
}
for (int j=0;j<ransomNote.length();j++)
{
hash[ransomNote[j]-'a']--;
if(hash[ransomNote[j]-'a']<0)
{
return false;
}
}
return true;
}
};
分析发现只要magazine中每个字母出现的次数大于random中每个字母出现的次数,那么题解就可以成功。
主要方式使用哈希解法,
在创建的数组中存入每个字母出现的次数,在magazine中遍历一遍存入,之后减去random中的字母出现的次数,没有出现负值就是true。