leetcode力扣刷题系列python——3无重复字符的最长子串

Posted zhangxingcomeon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode力扣刷题系列python——3无重复字符的最长子串相关的知识,希望对你有一定的参考价值。

题目:

 

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

 

示例 1:

 

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

 

示例 2:

输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。


解法:

采用哈希表法:设定左右双指针l和r,遍历字符串;
哈希表存储某字符s[i]最新在字符串中出现的位置index + 1,key, value对应s[i], i;
左指针在遍历过程中:
若s[i]不在HashMap中,则跳过;
否则,l 指针设定为 l 和 dic[s[r]] 的最大值,即修改之后,保证新字符串中没有重复字符。
每次更新长度最大值res

 1 class Solution:
 2     def lengthOfLongestSubstring(self, s: str) -> int:
 3         dic = 
 4         l, res = 0, 0
 5         for r in range(len(s)):
 6             if s[r] in dic:
 7                 l = max(dic[s[r]], l)
 8             dic[s[r]] = r + 1
 9             res = max(res, r - l + 1)
10         return res

 



 

以上是关于leetcode力扣刷题系列python——3无重复字符的最长子串的主要内容,如果未能解决你的问题,请参考以下文章

力扣刷题资源

两个数组的交集(力扣刷题)

力扣刷题之一,两数之和

力扣刷题笔记由简到难,模块突破, 你与AC只差一句提示

力扣刷题算法笔记(javascript版)下

力扣刷题笔记--304 二维区域和检索 - 矩阵不可变 前缀和