最长非重复子串(python实现)

Posted Micheal_L

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长非重复子串(python实现)相关的知识,希望对你有一定的参考价值。

'''
取一个起始位置和一个结束位置,结束位置用于往活动字符串(列表)中放字符。
如果活动列表长度大于最长列表的长度,替换。
如果活动列表中存在该字符并且原字符串中的起始位置和结束位置对应的值相同,结束位置赋值给起始位置。
否则起始位置等于原字符串中该字符对应索引的下一个位置。
'''

b = 'abaaacddff'
# k = input()
# print(b.index(k))
max_string = []
ac_string = []
lis = list(b)
start = 0
end = 0
while end != len(b):
    if b[end] not in ac_string:
        ac_string.append(b[end])
        end +=1
    else:
        if lis[start] == lis[end]: #筛选出全是重复的例子:aaaaa这种
            start = end
        else:
            start = start + ac_string.index(b[end]) +1 #aaabb这种,当第二个b不能与a(最后一个a),则应该把start从第二个b开始
            end = start
        ac_string = []
    if len(max_string) < len(ac_string):
        max_string = ac_string

max_string = ''.join(max_string)
print(max_string)

以上是关于最长非重复子串(python实现)的主要内容,如果未能解决你的问题,请参考以下文章

python实现无重复字符串的最长子串

459. 重复子字符串(Python)

leetcode No.3 无重复字符的最长子串 (python3实现)

leetcode 无重复字符的最长子串 python实现

动态规划——最长公共子序列与最长公共子串 (含Python实现代码)

两个字符串的最长公共子串python代码