解题思路
统计magzine
字符串中每一个字符串的出现次数,再遍历ransom
中每一字母。
STL实现
unorder_map
直接利用[]
给不存在的key-value
赋值是可行的
不存在的key
对应的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;
}
};
网友评论