最長非重復子串(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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM