【问题标题】:Is it possible in Python 3 to update the value of the iterating variable during runtime?在 Python 3 中是否可以在运行时更新迭代变量的值?
【发布时间】: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


【解决方案1】:

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

最后你应该有一个可行的例子。

【讨论】:

  • 这是否像一个 FCFS 队列,涉及弹出字符(子字符串?)直到并包括重复字符的第一个实例的索引,然后重复?
  • 我试图描述的不是 FCFS(或 FIFO),而是:en.wikipedia.org/wiki/Stack_(abstract_data_type)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多