1、用ordered_map做出来了
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.size() != t.size()){
return false;
}
unordered_map<char, int> hashtable;
for(int i=0; i<s.size(); i++){
hashtable[s[i]] ++;
}
for(int i=0; i<t.size(); i++){
hashtable[t[i]] --;
if(hashtable[t[i]]<0){
return false;
}
}
return true;
}
};
2、看了题解,是用vector<int>做的,因为字母只有26个,用数组下标0~25就能表示完。算法流程都是一样的,就是不知道为什么要比哈希表稍微快一点。
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.length() != t.length()) {
return false;
}
vector<int> table(26, 0);
for (auto& ch: s) {
table[ch - 'a']++;
}
for (auto& ch: t) {
table[ch - 'a']--;
if (table[ch - 'a'] < 0) {
return false;
}
}
return true;
}
};