题目:
Given an array of strings, group anagrams together.
Input: ["eat", "tea", "tan", "ate", "nat", "bat"], Output: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] Note: All inputs will be in lowercase; The order of your output does not matter.
思路:
每个字符串排序后加入字典与分别的数组中,如果字典中存在该字符串,则加入到对应的数组中
具体字典为HashMap<String, List<String>>
代码:
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> re = new LinkedList<List<String>>();
HashMap<String, List<String>> map = new HashMap<String, List<String>>();
for(int i=0;i<strs.length;i++) {
String temp = sorted(strs[i]);
if(!map.containsKey(temp)) {
List<String> t = new LinkedList<String>();
t.add(strs[i]);
map.put(temp,t);
}else {
map.get(temp).add(strs[i]);
}
}
for(String s:map.keySet()) {
re.add(map.get(s));
}
return re;
}
public String sorted1(String s) {
String re = "";
char[] cl = s.toCharArray();
Arrays.sort(cl);
for(int i=0;i<cl.length;i++) {
re = re + cl[i];
}
return re;
}
}