Leetcode学习(41)—— Find All Anagrams in a String

来源:互联网 发布:mac子弹头专柜价格 编辑:程序博客网 时间:2024/06/07 02:53

Given a string s and a non-empty string p, find all the start indices of p’s anagrams in s.

Strings consists of lowercase English letters only and the length of both strings s and p will not be larger than 20,100.

The order of output does not matter.

Example 1:Input:s: "cbaebabacd" p: "abc"Output:[0, 6]Explanation:The substring with start index = 0 is "cba", which is an anagram of "abc".The substring with start index = 6 is "bac", which is an anagram of "abc".Example 2:Input:s: "abab" p: "ab"Output:[0, 1, 2]Explanation:The substring with start index = 0 is "ab", which is an anagram of "ab".The substring with start index = 1 is "ba", which is an anagram of "ab".The substring with start index = 2 is "ab", which is an anagram of "ab".

这里写图片描述

策略:

在沿着 字符串 s 滑动的过程中,检查从当前位置 i 到前方位置 i-len(p)+1 的 Counter 与 pCounter 的关系:

  • 若相等,则将 前方位置 i-len(p)+1 的下标 存入 anagram_list
  • 否则,将 前方位置 的字符的 数量 -1, 若该数量 == 0, 则从 sCounter 中删除该 字符

这里写图片描述

0 0
原创粉丝点击