一、题目
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
二、子串与子序列区别
对于字符串: “pwwkew”。
子串需要字符连续的,如其中的pww,wwk。
子序列不需要连续,如 pwk,pke等
三、题目分析
用一层循环提取每个字符,单独建立一个不重复的子串,每提取一个字符,在子串中进行检测是否重复,当有重复字符时,则更新该子串,更新的同时需要不断检测是否为较长的子串。
四、python3代码
class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
temp = res = "" #temp暂存子串,res暂存合适的子串
for item in s:#对于字符串s中的每个字符
if item not in temp:#如果这个字符不在temp当中
temp += item
if len(temp) > len(res):
res = temp
else:
i = temp.index(item)#找到索引
if i == len(temp)-1:
temp = item#如果到达末尾
else:
temp = temp[i+1:] + item#没达到末尾
if len(temp) > len(res):
res = temp
return len(res)
本文详细解析了寻找字符串中最长无重复字符子串的算法实现,通过具体示例展示了如何利用Python进行子串与子序列的区别分析,并提供了一种有效的方法来解决此类问题。
858

被折叠的 条评论
为什么被折叠?



