leetcode力扣刷题系列python——3、无重复字符的最长子串
2020-12-13 05:24
标签:bcb key 最大值 size pre longest 设定 substring 存储 题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 示例 2: 采用哈希表法:设定左右双指针l和r,遍历字符串; leetcode力扣刷题系列python——3、无重复字符的最长子串 标签:bcb key 最大值 size pre longest 设定 substring 存储 原文地址:https://www.cnblogs.com/zhangxingcomeon/p/11140063.html
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
解法:
哈希表存储某字符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、无重复字符的最长子串
文章链接:http://soscw.com/essay/30899.html