是之前的重排列字符串的延伸,判断是重排列后存到HashMap中进行分组
这种HashMap进行分组的方式很常用
public List<List<String>> groupAnagrams(String[] strs) { /* 其实重排列的那个题是有两种做法的,之前整理的是比较好的的一种字母哈希表的方法,还有一种方法 是把字符串排序,然后进行比较就行。 这个题正好就是用了排序的方法,排序后的字符串作为key,list作为value就行 一开始想用字母哈希表的方法,结果没做出来 java中没有字符串排序方法,要自己实现 */ Map<String,List<String>> map = new HashMap<>(); for (int i = 0; i < strs.length; i++) { String str = strs[i]; String temp = sort(str); List<String> list = map.getOrDefault(temp,new ArrayList<>()); list.add(str); map.put(temp,list); } List<List<String>> res = new ArrayList<>(); for (String str: map.keySet()){ res.add(map.get(str)); } return res; } public String sort(String str) { char[] chars = str.toCharArray(); Arrays.sort(chars); return new String(chars); }
分组就要想到HashMap!!!!!!!!!!!