题目
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词
思考
法一:排序sort,之后比较两个排好的单词是否一致,n*logn
法二:用map,进行计数,循环字符O(n),插入是O(1),所以最后O(n)
法三:直接用数组进行计数,实际就是自己实现了一个hash表
map学习
map用法整理
法二代码
class Solution {
public:
bool isAnagram(string s, string t) {
map<char,int>mymap;
if(s.size()!=t.size())
{
return false;
}
for(int i=0;i<s.length();i++)
{
mymap[s[i]]++;
mymap[t[i]]--; //只要一个map同时对s、和t操作而不需要两个map
}
map<char,int>::iterator it;
it=mymap.begin();
while(it!=mymap.end())
{ if(it->second!=0)
{
return false;
}
it++;
}
return true;
}
};