面试题 10.02. 变位词组
难度中等71收藏分享切换为英文接收动态反馈
编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。
注意: 本题相对原题稍作修改
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
说明:
- 所有输入均为小写字母。
- 不考虑答案输出的顺序。
答案: c++版本
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> mp; //定义哈希表
for(string &str:strs){
string key=str;
sort(key.begin(),key.end()); //排序
mp[key].push_back(str); //排序后插入相应的哈希表中
}
vector<vector<string>>ans;
for(auto it=mp.begin();it!=mp.end();it++){
ans.push_back(it->second);
}
return ans;
}
};