如何解决如何检查重复项之间的整个字符串?
Leetcode#3最长的子字符串,没有重复的字符
问题: 给定一个字符串,找到最长子字符串的长度而不重复字符。
我的代码:
def len_of_substring(s):
list_int = []
st = ''
for n in range(0,len(s)):
if s[n] not in st:
st=st+str(s[n])
list_int.append(len(st))
else:
#list_int.append(len(st))
st=s[n]
return(max(list_int))
len_of_substring('dvdf')
代码应为“ vdf”返回3,但我的代码仅返回2。将不胜感激!
解决方法
您永远不会将找到的最后一个子字符串附加到list_int
。您可以在for循环之后添加如下内容来解决该问题:
if st:
list_int.append(len(st))
此外,行st=s[n]
不太正确。考虑输入dvdf
。当您浏览时,st
将从''
变成'd'
变成'dv'
,最后我们会发现{{ 1}}。我们应该尝试从s[2] == 'd'
开始,最终找到st
,但是我们只是从当前字符开始。修复另一种(昂贵)的方法是在else块中,找到重复的 last 外观的位置,然后从那里开始工作。即,代替v
进行以下操作:
vdf
将所有内容放在一起,您将得到以下内容:
st=s[n]
一旦工作,就会出现其他性能和样式问题。您可能需要将完成的代码发布到code review stackexchange。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。