49. 字母异位词分组
给定一个字符串数组,将其中的字母异位词组合在一起,放入一个结果列表中,返回这个结果列表
所谓字母异位词就是每种字母出现次数相同的单词,例如abb,bab.aab则不是,注意到abb,bab互为字母异位词的,按照字母从小到大排序后为一个单词。
根据这个特点,我们用哈希进行存储,单词作为key,互为字母异位词的单词组成的数组作为val,
遍历字符串数组,取出答案放入结果列表即可。
class Solution {
public://把每种字母出现次数相同的字符串分到同一组vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string,vector<string>> mp;//将排好序的每种字母出现的字符串放入同一组for (auto it:strs){string sorted_s = it;sort(sorted_s.begin(),sorted_s.end());mp[sorted_s].push_back(it);}vector<vector<string>> ans;//取出答案放入ansfor (auto it:mp) {ans.push_back(it.second);}return ans;}
};
时间复杂度:O(nmlogm),n为字符串数组长度,m为字符串长度,对每个字符串进行排序需要O(mlogm),共n个字符串