python-leetcode-找到字符串中所有字母异位词

438. 找到字符串中所有字母异位词 - 力扣(LeetCode)

python 复制代码
from collections import Counter
class Solution:
    def findAnagrams(self, s: str, p: str) -> List[int]:
        if len(s) < len(p):  
            return []  # s 比 p 还短,直接返回空列表

        res = []
        p_count = Counter(p)  # 统计 p 中字符出现次数
        s_count = Counter(s[:len(p)])  # 统计窗口内的字符出现次数

        if s_count == p_count:
            res.append(0)  # 第一个窗口匹配

        for i in range(len(p), len(s)):
            s_count[s[i]] += 1  # 加入新的字符
            s_count[s[i - len(p)]] -= 1  # 移除窗口左侧字符

            if s_count[s[i - len(p)]] == 0:  
                del s_count[s[i - len(p)]]  # 清理计数为 0 的字符

            if s_count == p_count:
                res.append(i - len(p) + 1)  # 记录起始索引

        return res
相关推荐
电鱼智能的电小鱼3 分钟前
服装制造企业痛点解决方案:EFISH-SBC-RK3588 柔性化吊挂调度方案
网络·人工智能·嵌入式硬件·算法·制造
夕颜1114 分钟前
降噪算法的效果分析
算法
Code小翊8 分钟前
希尔排序基础理解
数据结构·算法·排序算法
_dindong23 分钟前
笔试强训:Week -2
笔记·学习·算法
Pluchon26 分钟前
硅基计划4.0 算法 二叉树深搜(DFS)
java·数据结构·算法·leetcode·深度优先·剪枝
颜酱29 分钟前
用导游的例子来理解 Visitor 模式,实现AST 转换
前端·javascript·算法
CUC-MenG32 分钟前
2025牛客国庆集训派对day7 M C 个人题解
数学·算法·线段树·差分·扫描线
程序员杰哥38 分钟前
UI自动化测试实战:从入门到精通
自动化测试·软件测试·python·selenium·测试工具·ui·职场和发展
远远远远子1 小时前
C++-- 内存管理
c++·算法
sprintzer1 小时前
10.6-10.15力扣模拟刷题
算法·leetcode·职场和发展