您的位置:首页 > 文旅 > 美景 > 找到字符串中所有字母的异位词(LeetCode)

找到字符串中所有字母的异位词(LeetCode)

2024/10/6 8:33:12 来源:https://blog.csdn.net/weixin_74254879/article/details/141340396  浏览:    关键词:找到字符串中所有字母的异位词(LeetCode)

题目

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

        异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。

解题

from collections import Counterdef findAnagrams(s: str, p: str):# 字符串 p 的字符频率p_count = Counter(p)# 滑动窗口的大小window_size = len(p)# 结果列表result = []# 初始窗口的字符频率window_count = Counter(s[:window_size - 1])# 滑动窗口遍历字符串 sfor i in range(window_size - 1, len(s)):# 将新字符加入窗口window_count[s[i]] += 1# 检查当前窗口的字符频率是否与 p 的字符频率相等if window_count == p_count:result.append(i - window_size + 1)# 移出窗口最左边的字符window_count[s[i - window_size + 1]] -= 1# 如果频率为 0,则删除该字符if window_count[s[i - window_size + 1]] == 0:del window_count[s[i - window_size + 1]]return results = "cbaebabacd"
p = "abc"
print(findAnagrams(s, p))  # 输出: [0, 6]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com