leetcode HOT100(49.字母异位词分组)
这个题我们可以想到,如果我们将这个字符串数组里面的字符串,每个都排好序,那么如果这两个字符串如果是字母异位词,那么他们排序后就会相等。我们可以创建一个HashMap,遍历字符串数组,然后将遍历取到的字符串转化为字符数组,然后进行排序。排序后再转化为字符串,将其作为key。然后我们再去map集合里面根据这个key去取list集合(如果不存在就创建一个空集合)。之后将当前的字符串存入到list集合中,最后再将这个key和这个list集合(value)存入map集合。
代码演示:
class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>> map=new HashMap<String,List<String>>();for(String str:strs){//将遍历的字符串转化为字符数组char[] array= str.toCharArray();//将字符数组排序Arrays.sort(array);//将排序好的转化为字符串String key=new String(array);//用key从map里面取,如果取不到创建一个新的空listList<String> list= map.getOrDefault(key,new ArrayList<String>());//将当前字符串写入list集合list.add(str);//将key和list放入map集合map.put(key,list);}return new ArrayList<List<String>>(map.values());}
}