最长非重复子串(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) 相关推荐
Lzs 2020-10-23
聚合室 2020-11-16
零 2020-09-18
Justhavefun 2020-10-22
ChaITSimpleLove 2020-10-06
周游列国之仕子 2020-09-15
afanti 2020-09-16
88234852 2020-09-15
YClimb 2020-09-15
风雨断肠人 2020-09-04
卖口粥湛蓝的天空 2020-09-15
stulen 2020-09-15
pythonxuexi 2020-09-06
abfdada 2020-08-26
梦的天空 2020-08-25