解題思路
統(tǒng)計magzine
字符串中每一個字符串的出現(xiàn)次數(shù)涯曲,再遍歷ransom
中每一字母野哭。
STL實現(xiàn)
unorder_map
直接利用[]
給不存在的key-value
賦值是可行的
不存在的key
對應(yīng)的value++
先賦值默認值
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
unordered_map<char,int> mag;
for(auto iter = magazine.begin();iter!=magazine.end();iter++) {
mag[*iter] += 1;
}
for(auto iter = ransomNote.begin();iter!=ransomNote.end();iter++) {
mag[*iter] -= 1;
if(mag[*iter]<0)
return false;
}
return true;
}
};
直接利用簡單的hash
本題中只有小寫字母,直接hash更加方便
使用STL迭代器在某些情況下會造成性能浪費
用magazine[i]
判斷是否遍歷完全
class Solution {
public:
bool canConstruct(string ransomNote, string magazine) {
int hash[26]{};
for(int i = 0;magazine[i];i++) {
hash[magazine[i]-'a'] ++;
}
for(int i = 0;ransomNote[i];i++) {
if(--hash[ransomNote[i]-'a']<0)
return false;
}
return true;
}
};