【438】找到字符串中所有字母异位词

class Solution:
    def findAnagrams(self, s: str, p: str) -> List[int]:
        p_d, s_d, leng, res,l={}, {}, len(p), [], 0
        for i in p: p_d[i]=p_d.get(i,0)+1
        for r, c in enumerate(s):
            s_d[c] = s_d.get(c,0)+1
            if c not in p_d:
                l = r+1
                s_d.clear()
            else:
                if r-l+1==leng:
                    if s_d==p_d:
                        res.append(l)
                    s_d[s[l]]-=1
                    l+=1
        return res

本题和567题类似,代码改一下即可:
【leetcode 567】字符串的排列

posted @ 2020-11-27 16:48  WangSJiNa  阅读(67)  评论(0)    收藏  举报