python测试用例之最长无重复子串选择

本文最后更新于:December 21, 2020 am

最长无重复子串选择

通过递归的方式实现,具体代码如下:

A. method_1

1
2
3
4
5
6
7
8
9
10
def lengthOfLongestSubstring(self, s):
from collections import defaultdict
length,i,d=0,0,defaultdict(int)
for j in range(len(s)):
if d[s[j]]>i:
length=max(length,j-i)
i=d[s[j]]
d[s[j]]=j+1;
length=max(length,len(s)-i)
return length

B. method_2

1
2
3
4
5
6
7
8
def lengthOfLongestSubstring(self, s):
d,start,length={},0,0
for i,j in enumerate(s):
if j in d:
length=max(length,i-start)
start=max(start,d[j]+1) # 小心
d[j]=i
return max(length,len(s)-start)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!