本文主要是介绍033. 字母异位词分组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给定一个字符串数组 strs ,将 变位词 组合在一起。 可以按任意顺序返回结果列表。
注意:若两个字符串中每个字符出现的次数都相同,则称它们互为变位词。
示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [“”]
输出: [[“”]]
示例 3:
输入: strs = [“a”]
输出: [[“a”]]
提示:
- 1 <= strs.length <= 104
- 0 <= strs[i].length <= 100
- strs[i] 仅包含小写字母
法1:主要使用了字母异位词排序结果相同的性质
1、将相同的字母异位词进行收集
2、整理收集结果
时间复杂度O(n)
class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {map<string, vector<string>> mv;vector<vector<string>> res;for (auto &str: strs){string key = str;sort(key.begin(), key.end());mv[key].push_back(str);}for (map<string, vector<string>>::iterator it = mv.begin(); it != mv.end();it++) {res.push_back((*it).second);}return res;}
};
这篇关于033. 字母异位词分组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!