哈希表法
「数组其实就是一个简单哈希表」,而且这道题目中字符串只有小写字符,那么就可以定义一个大小为26的数组(因为字符a到字符z的ASCII也是26个连续的数值。),来记录字符串s里字符出现的次数。
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.size()==0||t.size()==0||s.size()!=t.size()) return false;
vector<int> vec(26,0);
for(const auto& ch:s){
vec[ch-'a']++;
}
for(const auto& ch:t){
vec[ch-'a']--;
if (vec[ch - 'a'] < 0){
return false;
}
}
return true;
}
};
时间复杂度为O(n),空间上因为定义是的一个常量大小的辅助数组,所以空间复杂度为O(1)。