leetcode question 242


题目:判断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;
}

记录一下,自己的傻……