leetcode 每日一题 3. 无重复字符的最长子串
双指针法
思路:
指针j向前移动遍历字符串,使用字典记录j所指的字符和位置,指针i负责记录当前不含重复字符的起始位置,每当j指向的字符在字典中可以找到时,更新指针i的位置和对应字符的位置,则不含重复字符的子串长度为j-i+1,找到最大值即可。
例如:
abaabcba
代码:
class Solution: def lengthOfLongestSubstring(self, s: str) -> int: st = {} i,ans = 0,0 for j in range(len(s)): if s[j] in st: i = max(st[s[j]],i) ans = max(ans,j-i+1) st[s[j]] = j+1 return ans