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"]
]
Note: All inputs will be in lower-case.
解题思路:
这道题我自己的想法就是说,先将字符串进行排序,然后用一个HashMap的方式来存储,key是排序后的结果,value是相同key值所组成的List。但是自己觉得说这样中间有些步骤会比较复杂。然后还在想说如果用整数来表示一个字符串会不会快一些。看了leetcode里面推荐答案的想法是跟我一样的。然后也发现了java里面定义了这么多好用的方法...代码跟推荐答案基本差不多,因为思路差不多...
public class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String,ArrayList<String>> content= new HashMap<String,ArrayList<String>>();
for(String s : strs)
{
char[] cchar = s.toCharArray();
Arrays.sort(cchar);
String ss = String.valueOf(cchar);
if(!content.containsKey(ss))
content.put(ss, new ArrayList<String>());
content.get(ss).add(s);
}
return new ArrayList<List<String>>(content.values());
}
}