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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 1,516评论 0 3
  • 集合框架: 1)特点:存储对象;长度可变;存储对象的类型可不同2)Collection(1)List:有序的;元素...
    Demo_Yang阅读 1,281评论 0 4
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,767评论 0 33
  • 每次都没有勇气去打开那尘封已久的过去。时间似乎总是喜欢和人开一个又一个玩笑。忘却与记忆永远是生命里无法平衡...
    北方的小学森阅读 334评论 0 0