力扣-3. 无重复字符的最长子串

刷力扣热题–第二天–第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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值