【Leetcode】438. Find All Anagrams in a String

1 因为anagram是字符的不同排列,所以只需用一个dictionary来存储每个字符出现的次数,pCounter

2 用sliding window来实现

3 对s中的前len(p)-1也建立一个dictionary,sCounter

4 循环的起始值是index=len(p)-1,这是因为前len(p)-1个元素已经在dictionary中,从第len(p)开始,但是len(p)的index是len(p)-1

5 把这个元素加在sCounter中,判断pCounter与sCounter是否相等,相等的话,就返回起始index值

6 这个anagram对比完,进行下一个,则需要把sCounter中最旧的那个减1

7 当最旧的那个减到0后,删除这个元素

8 dict[s[i]],dictionary字典活得某个value的count,是用[]

二刷:

1 首先肯定要知道p中各个元素的组成情况,所以用collections.Counter()来统计

2 同时使用sliding window来做,所以最开始需要创建一个sliding window

三刷:

34/36过了

1 我的方法是每个循环里都用counter,这样其实是很耗时的,其实可以每次对counter添加一个元素来计数,会省很多时间

2 当counter的某个元素计数为0了,要把这个元素删掉



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 细雨中,你微笑 白色凉鞋下盛开着,是一朵朵鲜花 你转身,不再回首 长发飘飘洒洒,如同甩过万千光华 雨伞垂下,曾经牵...
    刘高莉娟阅读 1,607评论 1 3
  • 5:30,准时起床,推开窗,外面下起了漂泊大雨,一阵一阵,雨点敲打着窗棱,也敲打着我游移不定的心。 ...
    一帘思语阅读 3,395评论 6 1
  • 优秀是一种习惯。把生活当中的事情变成习惯,潜意识的控制,这样就能更高效率的去工作。就像自然而然,刷牙、呼吸一样,把...
    y诗淇阅读 1,058评论 0 0
  • 无数的瞬间,我都是想放弃的,后来还是一路走来。 是的,时间并不长,还不到一年。 今天姐姐问我,说什么办法能既照顾到...
    俏村姑阅读 2,444评论 2 1

友情链接更多精彩内容