最长非重复子串(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实现)的主要内容,如果未能解决你的问题,请参考以下文章
leetcode No.3 无重复字符的最长子串 (python3实现)