本文主要是介绍字母异位词分组-力扣,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先想到的解法是调用上道题写好的 有效的字母异位词 函数,来对strs中的字符串进行两两判断,然后添加到不同的vector,但转眼一想这样写无疑过于麻烦。在想到上提另一种解法排序后,本题也可以采用排序的方法来做,遍历strs中的每个字符,对这个字符进行排序,那么排序后的 字符 是唯一的,我们将这个排序后的字符作为map的键值,将 str元素组成的vector ,作为map value。那么在一次遍历之后,我们只需对这个哈希表进行遍历,并将每个键值映射的vector添加到一个vector中进行返回即可。代码如下:
class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> v;unordered_map<string, vector<string>> mp;for(auto str : strs){string tmp = str;sort(tmp.begin(), tmp.end());mp[tmp].push_back(str);}for(auto s : mp){v.push_back(s.second);}return v;}};
这篇关于字母异位词分组-力扣的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!