给定一个字符串,找出其中不含有重复字符的最长子串的长度
看到有好多方法,然后自己用本办法写了个。
主要思想就是从原字符串中逐一拿出元素添加到一个子串中,
如有重复就判断长度,并截掉重复部分继续添加
代码如下,欢迎指导!注释比较烂,多谢纠正!
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))