如何解决滑动窗口问题中执行的时间限制
这是 leetcode 上的问题:https://leetcode.com/problems/find-all-anagrams-in-a-string/
问题:给定两个字符串 s 和 p,返回一个包含 s 中 p 的字谜的所有起始索引的数组。您可以按任意顺序返回答案。
我做了两个指针滑动窗口心智模型(例如,一个指针在左外侧,一个指针在右外侧的字符串)。一旦达到 p 的第一个长度,我就向左递增,如果它是一个字谜,我将向列表中添加左索引。
class Solution(object):
def findAnagrams(self,s,p):
"""
:type s: str
:type p: str
:rtype: List[int]
"""
def checkAnagram(str1,p):
str1 = sorted(str1)
p = sorted(p)
if(p == str1):
return True
else:
return False
left = 0
right = 0
start = []
curr_list = []
p = list(p)
while(right < len(s)):
curr_list.append(s[right])
if(right >= len(p)-1):
if(checkAnagram(curr_list,p)):
start.append(left)
curr_list.remove(s[left])
left = left + 1
right = right + 1
return start
这行不通,因为时间超过了我很困惑,因为我认为这是 O(2n),因为我最多只访问列表两次。无论如何要加快速度?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。