当前位置:   article > 正文

leetcode字母异位词分组

leetcode字母异位词分组

1.暴力法

代码如下:

  1. class Solution {
  2. public:
  3. vector<vector<string>> groupAnagrams(vector<string>& strs) {
  4. int len=strs.size();
  5. vector<vector<string>> res;
  6. vector<int> visited(len,0);
  7. for(int i=0;i<len;i++)
  8. {
  9. if(visited[i]==0)
  10. {
  11. vector<string> ans;
  12. ans.push_back(strs[i]);
  13. string str=strs[i];
  14. sort(str.begin(),str.end());
  15. for(int j=i+1;j<len;j++)
  16. {
  17. if(visited[j]==0)
  18. {
  19. string str1=strs[j];
  20. sort(str1.begin(),str1.end());
  21. if(str==str1)
  22. {
  23. ans.push_back(strs[j]);
  24. visited[j]=1;
  25. }
  26. }
  27. }
  28. res.push_back(ans);
  29. }
  30. }
  31. return res;
  32. }
  33. };

 

2.优化

设map<string,vector<string>> m

以排序---排序相同的字符串的形式存储

这样,排序一样的字符串会在一起,然后遍历m,提取iter->second

代码如下:

  1. class Solution {
  2. public:
  3. vector<vector<string>> groupAnagrams(vector<string>& strs) {
  4. vector<vector<string>> res;
  5. map<string,vector<string>> M;
  6. for(int i=0;i<strs.size();i++){
  7. string key=strs[i];
  8. sort(key.begin(),key.end());
  9. M[key].push_back(strs[i]);//排序相同的放在一起
  10. }
  11. for(auto ite=M.begin();ite!=M.end();ite++)
  12. res.push_back(ite->second);
  13. return res;
  14. }
  15. };

 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/990648
推荐阅读
相关标签
  

闽ICP备14008679号