Problem 49

Group Anagrams

Posted by Ruizhi Ma on July 25, 2019

问题描述

https://leetcode.com/problems/group-anagrams/

解决思路

先将数组中的每一个字符串元素进行排序,以辨别字符串是否相等。再以HashMap存排好序的字符串(作为key),和原始字符串(作为value)。

代码

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        HashMap<String, List<String>> map = new HashMap<String, List<String>>();
        
        if(strs.length == 0 || strs == null) return new ArrayList<List<String>>(map.values());
        
        
        for(int i = 0; i < strs.length; i++){
            char[] c = strs[i].toCharArray();
            Arrays.sort(c);
            String key = String.valueOf(c);
            if(!map.containsKey(key)){
                map.put(key, new ArrayList<String>());
            }
            map.get(key).add(strs[i]);
        }
        
        
        return new ArrayList<List<String>>(map.values());
    }
}

复杂度分析

  1. 时间复杂度:O(n)
  2. 空间复杂度:O(n)

总结

String转char:str.toCharArray() char转String:String.valueOf(char)