尝试解决最长子串的变体,但陷入了 while 循环

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

所以我一直在尝试解决一个实践问题,即给定一个字符串,返回该字符串中出现的最长的唯一子字符串。例如,如果字符串是“aab”,那么我的函数的输出应该是“ab”。

下面是我尝试的解决方案,当我运行它时,函数永远不会结束,所以我一步一步地查看它,发现我的函数永远不会超过第一个 while 循环,但我不确定为什么。enter image description here

python substring
1个回答
0
投票

您的问题是关于不重复的子字符串吗?我尝试你的代码,它卡住了,因为 data.get(s[j], -1) 保持为 0,所以你的 j 保持为 1 并卡在循环中。您可以对其进行调试并更改查找重复字符的方式。这是一个代码可能会给你一些帮助。

def LongestSubstring(s: str):
i = 0
if len(s) == 0:
    return None
while i < len(s):
    sub_size = len(s) - i
    start = 0
    while start < (len(s) - sub_size + 1):
        sub = s[start:(start + sub_size)]
        start = start + 1
        for k in sub:
            counts = sub.count(k)
            if counts > 1:
                break
            if k == sub[len(sub) - 2]:
                return sub
    i = i + 1
© www.soinside.com 2019 - 2024. All rights reserved.