LC49.Group Anagrams

思路:

把每个词都按字母进行排序,放进map中,看结果是否相同。所以map中存的是字符串,有该字符串顺序的词(是一个list,每次遇到有一样顺序的词都加到list后面)

输出之前还要讲每个列表按照内部的词排序一下。(用collections.sort())

思路即:单词按字母排序。列表按单词排序。


知识点:

字符串排序?将其先转成char数组,对数组排序再转回字符串

转char数组?char[] carr = str.toCharArray();

循环Collection(List, Set)的元素: String str:strs

String str = new String(carr)与String str = carr的区别:

前者是不关内存里是否有carr这个对象,都新建一个对象保存carr,是在堆里面建立的对象 string,str和carr,是生成两个对象

后者是查找栈里有没有carr,如果有就引用它,没有就把carr存进栈,是生成一个对象

比如

String s1 = "hello";

String s2 = "hello";

那么

System.out.println(s1==s2);

结果为true,因为他们的地址值是一致的,都指向常量池中的字符串常量。

String s1 = new String("hello");

String s2 = new String("hello");

System.out.println(s1==s2);

结果则是false,因为他们都在堆中建立了对象,而对象之间的地址值不同



遍历map的方法:map.keyset(), map.entryset()

entrySet方法一次拿到所有key和value的集合;而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value.

时间复杂度:O(nlength)

你可能感兴趣的:(LC49.Group Anagrams)