我正在尝试编写一个程序,该程序返回字符串中最长子字符串的长度。这是我的代码:
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循环在更新字符串时从头开始进行迭代?
嗯,不是这样。Python会在循环开始时迭代s
。
[您应该尝试使用酒窖存储之类的其他方法。
Push every letter to it in the correct order,
loop untils its empty,
pop a value,
do whatever you want with it,
push a value to it, if necessary.
最后,您应该有一个有效的示例。