我正在尝试leetcode问题#3,但遇到了超出时间限制的情况

问题描述 投票:0回答:1

对我宽容一些,我是leetcode的新手:),但我正在努力解决第三个问题,它要求你:给定一个字符串s,找到最长的不重复字符的子字符串的长度。

对此,我只能想到暴力破解。在其中找到所有可能的子字符串,检查它们是否有效,然后找到这些子字符串的最大长度。这是我到目前为止所拥有的:

#returns true if there is a duplicate character
def count_characters(self,s):
    for i in s:
        if s.count(i)>1:
            return True
    return False

def lengthOfLongestSubstring(self, s):
    """
    :type s: str
    :rtype: int
    """
    #generate list of all substrings
    max_len = 0 

    for i in range(len(s)):
        for j in range(i+1, len(s)+1):
            substr = s[i:j]
            if len(substr)>max_len and not self.count_characters(substr):
                    max_len = len(substr)
            print(substr)

    return max_len

有什么想法或提示吗?另外,我只是想尝试在堆栈上发帖,即使我可以在网上找到答案

python
1个回答
0
投票

答案受字母表大小的限制,如果您的字符串仅包含小写英文字母,那么在 27 个字母之后,您肯定会有重复字符。

因此,在内循环中,循环最多 26 个字母就足够了,总复杂度为

O(N * 26)

© www.soinside.com 2019 - 2024. All rights reserved.