题目链接
场景:判断某个元素是否出现过
思路:考虑使用哈希表
解法一:哈希数组. 由题意可知字符均为小写英文字母,数量有限,可以使用哈希数组。
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.length() != t.length()) return false;
int cnt[26] = {0};
for(int i = 0; i < s.length(); i++){
cnt[s[i] - 'a']++;
}
for(int i = 0; i < t.length(); i++){
cnt[t[i] - 'a']--;
}
for(int i=0;i<26;i++){
if(cnt[i]!=0) return false;
}
return true;
}
};
Unicode进阶:考虑使用map容器
class Solution {
public:
bool isAnagram(string s, string t) {
//Unicode进阶
if(s.length() != t.length()) return false;
unordered_map<char, int> hashmap;
for(auto i:s){
hashmap[i]++;
}
for(auto i:t){
hashmap[i]--;
}
for(auto i:hashmap){
if(i.second!=0) return false;
}
return true;
}
};