【发布时间】:2020-06-17 12:58:11
【问题描述】:
我正在尝试编写一个返回字符串中最长子字符串长度的程序。 这是我的代码:
def lengthOfLongestSubstring():
dict = {}
s = 'dvdf'
max_substr_length = 0
max_substr = ''
if len(s) < 1:
return 0
else:
for letter in s:
print('String value: ', s)
if letter not in max_substr:
max_substr = max_substr + letter
max_substr_length = len(max_substr)
dict[max_substr] = dict.get(max_substr, max_substr_length)
print(letter, max_substr, max_substr_length, dict)
elif letter in max_substr:
dict[max_substr] = dict.get(max_substr, max_substr_length)
s = s[s.index(letter)+1:]
max_substr = ''
max_substr_length = 0
print(s, letter, max_substr, max_substr_length, dict)
print(dict)
print(max(dict.values(), default=0))
对于输入字符串s = 'dvdf'
在我的代码s = s[s.index(letter)+1:] 的第 18 行中,我正在删除在输入字符串 s 中重复的字母的第一个实例。
因此,当遇到第二个 'd' 时, s 应该更新为 s = 'vdf'
不幸的是,for 循环不会从这个新 s 的第 0 个索引开始迭代。有没有一种方法不涉及迭代整数索引以在更新字符串时让 for 循环从头开始迭代?
【问题讨论】:
-
最长的子串是什么意思?你的意思是同一个字母不出现多次的最长字符串?
-
是的。不重复字符的最长子串。例如:ip:'abcacbb',op:3 ip:'dvdf',op:3
-
这样吗?请至少尝试使用搜索功能:/ stackoverflow.com/questions/48343033/…
-
我知道解决方案存在,我只是在尝试一些不同的东西。
标签: arrays python-3.x for-loop substring indexof