力扣483找到字符串中所有字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

python 复制代码
class Solution(object):
    def findAnagrams(self, s, p):
        #存放数组
        res=[]
        len_s=len(s)#s字符串长度
        len_p=len(p)#p字符串长度
        if len_s<len_p:
            return []
        count_p=[0]*26 
        count_s=[0]*26
        for i in range(len_p):
            count_p[ord(p[i])-ord('a')]+=1
            count_s[ord(s[i])-ord('a')]+=1
        #第一个滑动窗口匹配
        if count_s == count_p:
            res.append(0)
        #移动滑动窗口,判断是否匹配成功
        for i in range(1,len_s-len_p+1):
            #移除左边字符
            left_char=s[i-1]
            count_s[ord(left_char)-ord('a')]-=1
            #添加右边字符
            right_char=s[i+len_p-1]
            count_s[ord(right_char)-ord('a')]+=1
            if count_p==count_s:
                res.append(i)
        return res

需要采用滑动串口,左边移除一个字符,右边添加一个字符,又因为他不要求字符顺序,所以可以采用每个字符的出现次数来判断是否匹配上。

相关推荐
小程序设计9 分钟前
【机械设计】磁粉检测机器人的设计与验证
算法·机器人
Navigator_Z14 分钟前
LeetCode //C - 1220. Count Vowels Permutation
c语言·算法·leetcode
吃好睡好便好26 分钟前
判断函数的使用
学习·算法·matlab·生活·判断函数
2601_9561219729 分钟前
线性DP(入门)
c++·算法·动态规划
feilieren40 分钟前
leetcode - 389. 找不同
算法·leetcode
挽星安44 分钟前
2026/8/29
数据结构·算法
positive_zpc1 小时前
进阶数据结构图——最短路径(二)
数据结构·算法·图论·最短路径
positive_zpc1 小时前
进阶数据结构图——最小生成树(一)
数据结构·算法·图论
码完就睡1 小时前
数据结构——遍历二叉树
数据结构·算法
evans在进步1 小时前
LeetCode 238 除自身以外数组的乘积:前缀积与后缀积详解
算法·leetcode·职场和发展