49. Group Anagrams

49. Group Anagrams

题目

解题思路

  1. 把相应的字符串转为字符数组,然后排序,并将该数组转为字符串和当前数据种类的索引存入map
  2. 没遍历一个查看map是否已存在索引,不存在创建一个List并存进去
  3. 存在则获得,并将对应的字符串存入获得的List中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> list = new ArrayList<List<String>>();
Map<String, Integer> map = new HashMap<>();
for(int i=0;i<strs.length;i++) {


String current = sortString(strs[i]);
Integer index;
if((index = map.get(current))==null) {
ArrayList<String> list2 = new ArrayList<>();
map.put(current, list.size());
list2.add(strs[i]);
list.add(list2);

}else {
//System.out.println(strs[i]+",index="+index);
List<String> list2 = list.get(index);
list2.add(strs[i]);
}
}
return list;
}

public String sortString(String str) {
char[] cs = str.toCharArray();
Arrays.sort(cs);

return Arrays.toString(cs);
}


public static void main(String[] args) {
String[] input = {"eat","tea", "tan", "ate", "nat", "bat"};
System.out.println(new Solution().groupAnagrams(input));
}
}

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×