在Python 3中是否有可能在运行时更新迭代变量的值?

问题描述 投票:-1回答:1

我正在尝试编写一个程序,该程序返回字符串中最长子字符串的长度。这是我的代码:

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循环在更新字符串时从头开始进行迭代?

arrays python-3.x for-loop substring indexof
1个回答
0
投票

嗯,不是这样。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.

最后,您应该有一个有效的示例。

© www.soinside.com 2019 - 2024. All rights reserved.