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
相关推荐
垆边人似月.几秒前
华为题:盛最多水的容器
数据结构·算法
杨逢昌工厂6S管理2 分钟前
116——杨逢昌:归位三定闭环法的旺季轻量化执行方案与工具清单
经验分享·笔记·职场和发展·学习方法
怦然丶心动6 分钟前
用 Java 把干支历法算清楚:从节气切年到可读摘要
java·算法·vue·独立开发·spring boot / spring
Zachery Pole18 分钟前
具身智能强化学习(1)引言
算法·机器学习
xuxigifxfh19 分钟前
面试记录2026
java·mysql·面试·职场和发展
All for pursuit.20 分钟前
【动态规划-11】279.完全平方数
数据结构·c++·算法·leetcode·动态规划
淡海水26 分钟前
02-06-原理篇-增量式GC与并发GC
算法·unity·c#·并发·gc·增量
对空六课29 分钟前
无头浏览器访问对跳出率的过滤规则
服务器·前端·算法·数据分析
有同事要进步29 分钟前
leecode第一题-两数字之和(打卡)
算法
程序员清风34 分钟前
二叉搜索树:查找、插入与删除
算法