3. 无重复字符的最长子串(力扣题库)

题目

给定一个字符串 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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值