题目:spa
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。指针
示例 1:code
输入: "abcabcbb"
输出: 3
解释: 由于无重复字符的最长子串是 "abc",因此其长度为 3。blog
示例 2:字符串
输入: "bbbbb" 输出: 1 解释: 由于无重复字符的最长子串是 “b”,因此其长度为 1。
解法:
采用哈希表法:设定左右双指针l和r,遍历字符串;
哈希表存储某字符s[i]最新在字符串中出现的位置index + 1,key, value对应s[i], i;
左指针在遍历过程当中:
若s[i]不在HashMap中,则跳过;
不然,l 指针设定为 l 和 dic[s[r]] 的最大值,即修改以后,保证新字符串中没有重复字符。
每次更新长度最大值resstring
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