R2-滑动窗口篇
滑动窗口+哈希表
和之前那道一样
http://t.csdnimg.cn/dpIbt
class Solution:
def findAnagrams(self, s: str, p: str) -> List[int]:
#返回字典记录了每个字符出现的次数
counter1=collections.Counter(p)
#滑动窗口记录counter2即可
ret=[]
num2=len(s)
num1=len(p)
left=0
right=num1-1
counter2=collections.Counter(s[0:right])
while right<num2:
#加入right
counter2[s[right]]+=1
#次数一样就返回true
if counter1==counter2:
ret.append(left)
#下一次移动前,左边清空
counter2[s[left]]-=1
#如果左边left次数为0则需要删掉
if counter2[s[left]]==0:
del counter2[s[left]]
#滑动窗口向右移动
left+=1
right+=1
return ret