438.找到字符串中所有字母异位词
Posted wangshujaun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了438.找到字符串中所有字母异位词相关的知识,希望对你有一定的参考价值。
class Solution:
def findAnagrams(self, s: str, p: str) -> List[int]:
l=0
r=0
res = []
p_d = {}
windows_d = {}
for _ in p:
p_d[_] = p_d.get(_,0)+1
while(r<len(s)):
#如果字母不在子串中,清空窗口字典,同时移动左右窗口
if s[r] not in p:
l=r=r+1
windows_d.clear()
#当字母在子串中,窗口字典计数
windows_d[s[r]] = windows_d.get(s[r],0)+1
#当窗口大小和子串长度相等时,判断二者是否相等
if r-l+1 == len(p):
if windows_d==p_d:
res.append(l)
#将左边窗口右滑,修改窗口字典
windows_d[s[l]] = windows_d[s[l]]-1
l=l+1
#将右边窗口右滑,进行下一轮判断
r=r+1
return res
以上是关于438.找到字符串中所有字母异位词的主要内容,如果未能解决你的问题,请参考以下文章