赞
踩
1.暴力法
代码如下:
- class Solution {
- public:
- vector<vector<string>> groupAnagrams(vector<string>& strs) {
- int len=strs.size();
- vector<vector<string>> res;
- vector<int> visited(len,0);
- for(int i=0;i<len;i++)
- {
- if(visited[i]==0)
- {
- vector<string> ans;
- ans.push_back(strs[i]);
- string str=strs[i];
- sort(str.begin(),str.end());
- for(int j=i+1;j<len;j++)
- {
- if(visited[j]==0)
- {
- string str1=strs[j];
- sort(str1.begin(),str1.end());
- if(str==str1)
- {
- ans.push_back(strs[j]);
- visited[j]=1;
- }
- }
- }
- res.push_back(ans);
- }
- }
- return res;
- }
- };
2.优化
设map<string,vector<string>> m
以排序---排序相同的字符串的形式存储
这样,排序一样的字符串会在一起,然后遍历m,提取iter->second
代码如下:
- class Solution {
- public:
- vector<vector<string>> groupAnagrams(vector<string>& strs) {
- vector<vector<string>> res;
- map<string,vector<string>> M;
- for(int i=0;i<strs.size();i++){
- string key=strs[i];
- sort(key.begin(),key.end());
- M[key].push_back(strs[i]);//排序相同的放在一起
- }
- for(auto ite=M.begin();ite!=M.end();ite++)
- res.push_back(ite->second);
- return res;
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。