leetcode每日一题-49:字母异位词分组

leetcode每日一题-49:字母异位词分组

链接

字母异位词分组


题目

在这里插入图片描述



分析

不同的字母字节分组是比较难的,但是我们可以对每个字符串转化到一个中间态,然后根据中间态进行分组就容易了许多,接下来的问题是如何定义中间态,我们定义字符串中字符从小到大排列是中间态。



代码

C++

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        unordered_map<string, vector<string>> m;

        for(auto& s : strs)
        {
            string t = s;
            sort(t.begin(), t.end());
            m[t].push_back(s);
        }

        vector<vector<string>> res;

        for(auto& x : m) res.push_back(x.second);

        return res;
    }
};

Java

class Solution {
    
    
    public List<List<String>> groupAnagrams(String[] strs) {
    
    
        Map<String, List<String>> map = new HashMap<String, List<String>>();
        for (String str : strs) {
    
    
            char[] array = str.toCharArray();
            Arrays.sort(array);
            String key = new String(array);
            List<String> list = map.getOrDefault(key, new ArrayList<String>());
            list.add(str);
            map.put(key, list);
        }
        return new ArrayList<List<String>>(map.values());
    }
}

作者:LeetCode-Solution

猜你喜欢

转载自blog.csdn.net/qq_45826803/article/details/121544968