微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

滑动窗口问题中执行的时间限制

如何解决滑动窗口问题中执行的时间限制

这是 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 举报,一经查实,本站将立刻删除。