方法一:哈希表
需要注意的是对哈希表遍历时得到的迭代器不需要用->,使用.即可。
class Solution {
public:
bool isAnagram(string s, string t) {
unordered_map<int,int> array;
for(int i =0;i<s.length();i++)
{
auto iter = array.find(s[i]);
if(iter==array.end())
array.insert({s[i],1});
else
(iter->second)++;
}
for(int j = 0; j<t.length();j++)
{
auto itter = array.find(t[j]);
if(itter==array.end())
return false;
else
{
(itter->second)--;
if(itter->second<0)
return false;
}
}
for(auto num3:array)
{
if(num3.second!=0)
return false;
}
return true;
}
};
方法二:
字符串排序。
class Solution {
public:
bool isAnagram(string s, string t) {
if(s.length()!=t.length())
return false;
sort(s.begin(),s.end());
sort(t.begin(),t.end());
if(s!=t)
return false;
return true;
}
};
方法三:
数组。
class Solution {
public:
bool isAnagram(string s, string t) {
vector<int> array(26,0);
if(s.length()!=t.length())
return false;
for(char num1 :s)
{
array[num1-'a']++;
}
for(char num2:t)
{
array[num2-'a']--;
if(array[num2-'a']<0)
return false;
}
return true;
}
};