一个关于Python 开发的问题,给定一个字符串s,找到其中最长的无重复字符子串的长度。设计一个算法来解决此问题。要求时间复杂度为O(n),空间复杂度为O(1)。
def lengthOfLongestSubstring(s: str) -> int:
d = {}
left, right = 0, 0
max_len = 0
while right < len(s):
if s[right] in d and d[s[right]] >= left:
left = d[s[right]] + 1
d[s[right]] = right
max_len = max(max_len, right - left + 1)
right += 1
return max_len
(1)案例:单重循环:
(2)O(n)的含义:x轴为n,y轴为操作的数量。O(n)即代表n和操作数量成正比。
(3)丢弃常量:在讨论O(n)时,我们不关心斜率,即不关心操作数量具体是n的1倍还是2倍还是3倍,只要成正比,统统简化为O(n)。