zoukankan      html  css  js  c++  java
  • 最长非重复子串(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)
    
  • 相关阅读:
    SQLSERVER FUNCTIONS
    批处理命令学习
    java回调
    android布局中容易混淆的几个属性
    UML类图关系
    android面试试题
    Handler基础
    Android中自定义属性的使用
    php中钩子函数&实现
    Handler高级
  • 原文地址:https://www.cnblogs.com/michealjy/p/12335564.html
Copyright © 2011-2022 走看看