刷力扣热题–第二天–第3题 无重复字符的最长子串
菜鸟第二天开始奋战敲代码,持之以恒,见证成长
1.题目简介
2.题目解答
看到这道题,求的是序列的最长子串长度,老规矩遍历,从头数到尾,找到一个连续子集的最长长度,开干 。时间复杂度 O(n),空间复杂度 O(n)
细节问题,在修改一下
差一个,难受~怀疑是空格那边存在问题,改一下:
终于过了,但感觉其实还是存在很多冗余代码的,稍微优化一下,试试能不能加快速度并且减少内存消耗,其实我感觉这个解题方法很像数据结构队列那部分内容,先进先出。删了个print,执行时间变少了:
就先这样吧,之后刷第二遍的时候看看自己能不能得到启发。
3.心得体会
今天这道题,相对而言,比较简单,就处理空格问题会稍微繁琐一点,看能不能让自己较为繁琐的代码再精简一点,代码在这:
class Solution(object):
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
temp = []
max_length = 0
num_zero = 0
index = -1
for item in s:
if item == " " and num_zero == 0 and index == -1:
temp.append(item)
num_zero = 1
index = len(temp) - 1
max_length = max(len(temp), max_length)
continue
elif item == " " and num_zero == 1 and index == -1:
max_length = max(len(temp), max_length)
temp = temp[index:]
temp.append(item)
num_zero = 1
continue
if item not in temp:
temp.append(item)
max_length = max(len(temp), max_length)
else:
index_item = temp.index(item)
temp = temp[index_item+1: ]
temp.append(item)
num_zero = 0
max_length = max(len(temp), max_length)
return max_length
4.写作时长
2024-7-3-20:00 == 2024-7-3-21:00 今天进步了二十分钟,yep!