
题目:判断2个字符串是否互为字母移位之后的结果
bool isAnagram(string s, string t)
{
if (s.size() != t.size()) return false;
map<char, int> mapS, mapT;
for (auto i : s)
{
mapS[i] += 1;
}
for (auto i : t)
{
mapT[i] += 1;
}
if (mapS.size() != mapT.size()) return false;
vector<pair<char, int>> tmpS(mapS.begin(), mapS.end());
vector<pair<char, int>> tmpT(mapT.begin(), mapT.end());
sort(tmpS.begin(), tmpS.end());
sort(tmpT.begin(), tmpT.end());
auto iterS = mapS.begin();
auto iterT = mapT.begin();
while (iterS != mapS.end() && iterT != mapT.end())
{
if (iterS->first != iterT->first) return false;
if (iterS->second != iterT->second) return false;
++iterS;
++iterT;
}
return true;
}
这是我一开始自己写的代码,还为了map的排序费了很大的功夫,然而,后来我发现可以改成下面这种……
bool isAnagram(string s, string t)
{
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s == t;
}
记录一下,自己的傻……




近期评论