当前位置:   article > 正文

49. Group Anagrams_group anagrams 爱做饭

group anagrams 爱做饭

Given an array of strings, group anagrams together.

For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"],
Return:

[
  ["ate", "eat","tea"],
  ["nat","tan"],
  ["bat"]
]

思路: 题目意思是将具有相同字母的单词放在一组里.由于有26个字母,可以以字母出现次数构成的字符串为键构建map,属于同一键的即是属于一个list.

时间复杂度:O(N*M) N为字符串个数.M为单个字符串的长度

空间复杂度:O(N)

  1. <span style="font-size:14px;">public class Solution {
  2. public List<List<String>> groupAnagrams(String[] strs) {
  3. List<List<String>> result=new ArrayList<List<String>>();
  4. if(strs==null)
  5. return result;
  6. HashMap<String,List<String>> map=new HashMap<String,List<String>>();
  7. for(int i=0;i<strs.length;i++){
  8. StringBuilder sb=new StringBuilder("");
  9. int[] num=new int[26];
  10. for(int j=0;j<strs[i].length();j++){
  11. num[strs[i].charAt(j)-'a']++;
  12. }
  13. for(int j=0;j<26;j++)
  14. sb.append(num[j]);
  15. List<String> list=new ArrayList<String>();
  16. if(map.containsKey(sb.toString())){
  17. list=map.get(sb.toString());
  18. list.add(strs[i]);
  19. map.put(sb.toString(),list);
  20. }else{
  21. list.add(strs[i]);
  22. map.put(sb.toString(),list);
  23. }
  24. }
  25. for(String str:map.keySet()){
  26. result.add(map.get(str));
  27. }
  28. return result;
  29. }
  30. }</span>


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号