找到字符串中所有字母异位词【滑动窗口】

Problem: 438. 找到字符串中所有字母异位词

文章目录

思路 & 解题方法

主要需要注意s长度可能比p短

复杂度

时间复杂度:

添加时间复杂度, 示例: O ( 26 n ) O(26n) O(26n)

空间复杂度:

添加空间复杂度, 示例: O ( n ) O(n) O(n)

Code

python 复制代码
class Solution:
    def findAnagrams(self, s: str, p: str) -> List[int]:
        count_s, count_p = [0] * 26, [0] * 26
        len_s, len_p = len(s), len(p)
        if len_s < len_p:
            return []
        for ch in p:
            count_p[ord(ch) - ord('a')] += 1
        
        for i in range(len_p):
            count_s[ord(s[i]) - ord('a')] += 1
        left, right = 0, len_p - 1
        ans = []
        if count_p == count_s:
            ans.append(left)
        while right < len_s -1:
            count_s[ord(s[left]) - ord('a')] -= 1
            count_s[ord(s[right + 1]) - ord('a')] += 1
            left += 1
            right += 1
            if count_p == count_s:
                ans.append(left)
        return ans
相关推荐
硕风和炜2 天前
【LeetCode:3101. 交替子数组计数 + 滑动窗口 + 数学公式】
java·数学·算法·leetcode·滑动窗口
linweidong5 天前
Flink 时间窗口在 IoT 项目中的应用实战
物联网·flink·iot·滚动窗口·滑动窗口·时间窗口
源代码:趴菜11 天前
leetcode209:长度最小的子数组
算法·leetcode·滑动窗口
DogDaoDao1 个月前
LeetCode 算法:滑动窗口最大值c++
数据结构·c++·算法·leetcode·双端队列·滑动窗口·队列
小程xy1 个月前
leetcode力扣 2024. 考试的最大困扰度
数据结构·c++·算法·leetcode·滑动窗口
睡觉待开机2 个月前
【算法】滑动窗口——串联所有单词的子串
c++·算法·滑动窗口
睡觉待开机2 个月前
【算法】滑动窗口——最大连续1的个数
c++·滑动窗口
_Mr.Tree2 个月前
【限流】基于springboot(拦截器) + redis(执行lua脚本)实现注解限流
java·redis·springboot·限流·滑动窗口·漏桶·令牌桶
花木凋零成兰2 个月前
LC 239.滑动窗口最大值
java·算法·滑动窗口·队列
swadian20083 个月前
【运输层】TCP 的可靠传输是如何实现的?
tcp·滑动窗口·计算机网络原理·karn算法