
思路:将数据依次放入列表中,列表中不存重复数据,每出现一次重复则求列表的长度,就是当次能得到的最长子串
未出现重复时,就一直将数据添加到列表中,一旦出现重复,就把列表自重复数据起所有前面的数据清掉,再把这个重复的加进来,因为:
“abc” 后面出现了“a”则前面的就不需要了,“abcd”后面出现“c”则前面的“abc”都没有用了。
代码:
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
max_len = 0
child = []
for idx,mem in enumerate(s):
if mem not in child:
child.append(mem)
else:
if len(child) > max_len:
max_len = len(child)
start_list = child.index(mem) + 1
child = child[start_list:]
child.append(mem)
if len(child) > max_len:
max_len = len(child)
return max_len
该博客讨论了一种动态规划的方法来寻找字符串中的最长无重复字符子串。代码实现中,通过遍历字符串并维护一个列表来跟踪无重复字符的子串,当遇到重复字符时,更新最长子串的长度。此算法适用于字符串处理和数据结构的问题。
3万+

被折叠的 条评论
为什么被折叠?



