对我宽容一些,我是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
有什么想法或提示吗?另外,我只是想尝试在堆栈上发帖,即使我可以在网上找到答案
答案受字母表大小的限制,如果您的字符串仅包含小写英文字母,那么在 27 个字母之后,您肯定会有重复字符。
因此,在内循环中,循环最多 26 个字母就足够了,总复杂度为
O(N * 26)
。