力扣:3、无重复字符的最长子串

力扣:3、无重复字符的最长子串

力扣小白的自闭学习过程,争取做到每日更新,加油


题目描述

给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。

示例:
输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3

一、暴力求解

解题思路

  1. 遍历字符串每一个元素;
    2.以该元素为起始点计算其不含有重复字符的最长子串( 双重遍历)。
class Solution:
   def lengthOfLongestSubstring(self, s: str) -> int:
       if len(s) <= 1:										# 判断长度是否小于等于1
           return len(s)									# 是的话至今诶返回长度即可
       max_length = 1										# 设定初始长度
       for i in range(len(s)):								# 遍历字符串 
           temp = 1											# 设定计数器初始值 
           for j in range(i+1, len(s)):						# 遍历剩余字符串 
               if s[j] not in s[i:j]:						# 判断第j个字符是否在第i到j个字符之间
                   temp +=1									# 计数器加1
               else:										# 不在的话结束
                   break
           if max_length < temp:							#  判断最大字符数和计数器的大小
               max_length = temp							# 返回最大值

       return max_length

复杂度

  • 空间复杂度: O ( n ) O(n) O(n)
  • 时间复杂度:整体复杂度 O ( n 2 ) O(n^2) O(n2)

执行结果
在这里插入图片描述
后续再学习滑动窗口的方法


参考内容: 1、https://zhuanlan.zhihu.com/p/38094300
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值