力扣:3、无重复字符的最长子串
力扣小白的自闭学习过程,争取做到每日更新,加油
题目描述
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
示例:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
一、暴力求解
解题思路
- 遍历字符串每一个元素;
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