类似这种查询问题都可以使用哈希表来进行解决,也就是数组,set和unordered_map
当数据量大时可以使用unordered_set,需要返回下标时使用unordered_map
对于此题目来说,由于字母只有26个小写字母,所以我使用了数组进行求解,又因为我记不住字母对应的值,因此我进行了取巧的做法,我让数组存储为 该位置字母-'a'
实现代码如下
class Solution {
public:
bool isAnagram(string s, string t) {
int arr[26] = {0};
for(int i = 0; i < s.size(); ++i){
arr[s[i]-'a']++;
}
for(int i = 0; i < t.size(); ++i){
arr[t[i]-'a']--;
}
for(int i = 0; i < 26; ++i){
if(arr[i] != 0){
return false;
}
}
return true;
}
};