同构词分类

给定string数组把所有的同构词都聚在一起:

例:

["eat", "tea", "tan", "ate", "nat", "bat"]

返回:

bat
eat tea ate
tan nat

说明:如果两个词所组成的字母完全相同,只是字母的位置不同,就称之为同构词。

思路:

遍历整个str数组,把他们排序的结果当作哈希数组的key,value值就是未排序的原始string,最后再用二维数组的string来接收,返回即可。

vector<vector<string>> getSameWord(vector<string>& str)
{
    vector<vector<string>> ans;
    unordered_map<string, vector<string>> hash;
    for (auto s : str)
    {
        string key = s;
        sort(key.begin(), key.end());
        hash[key].push_back(s);
    }

    for (auto iter : hash)
    {
        ans.push_back(iter.second);
    }
    return ans;
}

 

posted @ 2020-10-21 20:12  王清河  阅读(411)  评论(0编辑  收藏  举报