问题描述
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());
}
}
复杂度分析
- 时间复杂度:O(n)
- 空间复杂度:O(n)
总结
String转char:str.toCharArray() char转String:String.valueOf(char)