RUN__IT # 02 求字符串中最长子串

给定一个字符串,找出其中不含有重复字符的最长子串的长度

看到有好多方法,然后自己用本办法写了个。

主要思想就是从原字符串中逐一拿出元素添加到一个子串中,
如有重复就判断长度,并截掉重复部分继续添加

代码如下,欢迎指导!注释比较烂,多谢纠正!

def long_str(str1):
    """求最长子串长度"""
    z_str = ""  # 用来接收遍历时添加元素
    count = 0  # 用来储存当前最长子串长度
    l_str = str()  # 最长子串
    for i in str1:
        if i in z_str:
            if len(z_str) > count:  # 判断是否大于最长子串
                count = len(z_str)
                l_str = z_str
                z_str += i
                z_str = z_str[z_str.find(i) + 1::]  # 去除前面重复部分
            else:  # 不是最长,就去除重复部分,但不赋值
                z_str = z_str[z_str.find(i) + 1::]
                z_str += i
        else:  # 不在接收的子串中,就添加
            z_str += i
            # print(z_str)
    # 退出循环后,判断暂存子串和最长子串的长度
    if len(z_str) > len(l_str):
        l_str = z_str
    return l_str


if __name__ == '__main__':
    str1 = "abbaacdde"
    print(long_str(str1))

猜你喜欢

转载自blog.csdn.net/RUN__IT/article/details/89111821