【发布时间】:2021-12-26 01:40:48
【问题描述】:
问题:给定一个字符串s,求最长子串的长度 没有重复的字符。
示例:输入:s = "abcabcbb" 输出:3 解释:答案是 "abc",长度为3。
我的解决方案:
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
seen = set()
l = r = curr_len = max_len = 0
n = len(s)
while l < n:
if r < n and s[r] not in seen:
seen.add(s[r])
curr_len += 1
max_len = max(curr_len, max_len)
r += 1
else:
l += 1
r = l
curr_len = 0
seen.clear()
return max_len
我知道这不是一个有效的解决方案,但我无法弄清楚它的时间复杂度。
我访问了字符串中的每个字符,但是对于每个字符,窗口都会扩展,直到找到一个重复的字符。所以每个 char 最终都会被访问多次,但不确定是否有足够的时间来证明 O(n2) 时间复杂度是合理的,而且显然它比 O(n) 更糟糕。
【问题讨论】:
-
欢迎来到Stack Overflow. 请注意这不是代码编写或辅导服务。我们可以帮助解决具体的技术问题,而不是关于软件理论或建议的开放式请求。
-
这不是开放式的。这是一个有特定解决方案的特定问题。
标签: python algorithm time-complexity