Leetcode:Anagrams 回文构词法

戳我去解题

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

 

Anagram(回文构词法)是指打乱字母顺序从而得到新的单词

回文构词法有一个特点:单词里的字母的种类和数目没有改变,只是改变了字母的排列顺序。
因此,将几个单词按照字母顺序排序后,若它们相等,则它们属于同一组anagrams

class Solution {
public:
    vector<string> anagrams(vector<string> &strs) {
       unordered_map<string, vector<string>> strHash;
       for (auto strVal : strs) {
           string key = strVal;
           sort(key.begin(), key.end());
           strHash[key].push_back(strVal);
       }
       vector<string> res;
       for (auto resVal : strHash) {
           if (resVal.second.size() > 1) {
               for (auto strVal : resVal.second) {
                   res.push_back(strVal);
               }
           }
       }
       return res;
    }
};

 

你可能感兴趣的:(LeetCode)