江阴市做网站的,wordpress 免费采集插件,asp 网站开发 软件,辽宁建设工程信息网抚顺1. 题目
编写一种方法#xff0c;对字符串数组进行排序#xff0c;将所有变位词组合在一起。 变位词是指字母相同#xff0c;但排列不同的字符串。
示例:
输入: [eat, tea, tan, ate, nat, bat]…1. 题目
编写一种方法对字符串数组进行排序将所有变位词组合在一起。 变位词是指字母相同但排列不同的字符串。
示例:
输入: [eat, tea, tan, ate, nat, bat],
输出:
[[ate,eat,tea],[nat,tan],[bat]
]说明
所有输入均为小写字母。
不考虑答案输出的顺序。来源力扣LeetCode 链接https://leetcode-cn.com/problems/group-anagrams-lcci 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 解题
2.1 排序哈希map
class Solution {
public:vectorvectorstring groupAnagrams(vectorstring strs) {unordered_mapstring,vectorstring m;vectorvectorstring ans;string origin;for(auto s : strs){origin s;sort(s.begin(), s.end());m[s].push_back(origin);}for(auto mi : m)ans.push_back(mi.second);return ans;}
};2.2 计数排序哈希map
class Solution {int count[26] {0};
public:vectorvectorstring groupAnagrams(vectorstring strs) {unordered_mapstring,vectorstring m;vectorvectorstring ans;string origin;for(auto s : strs){origin s;mysort(s);m[s].push_back(origin);}for(auto mi : m)ans.push_back(mi.second);return ans;}void mysort(string s){for(int i 0; i s.size(); i)count[s[i]-a];s ;for(int i 0; i 26; i){while(count[i]){s ia;count[i]--;}}}
};