题目
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
思路
创建一个临时字符串,每次更新以后与最大字符串进行比较,更新最大字符串
解题方法
创建两个字符串,一个临时字符串,一个最大字符串
对输入的字符串进行遍历,添加到临时字符串,在更新完临时字符串后与最大字符串进行比较
在遍历然后添加字符到临时字符串的时候要注意,重复字符可能出现在临时字符串的头、尾和中间,我原本是打算按不同情况分别讨论的,但是发现还是切片好使(切片yyds)用重复字符切片临时字符串后取后半段就能很好解决这个问题,如果不是重复字符直接往临时字符串添加就好了
复杂度
时间复杂度:
啊哈,我不会算
空间复杂度:
啊哈,我也不会算
代码:
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
maxstr = ''
lsstr = ''
for i in s:
if i in lsstr:
lsstr = lsstr.split(f'{i}')[1] + i
else:
lsstr = lsstr + i
if len(lsstr) > len(maxstr):
maxstr = lsstr
# print(maxstr)
return len(maxstr)