3. 无重复字符的最长子串

📅 发布时间:2026/7/11 5:02:35 👁️ 浏览次数:
3. 无重复字符的最长子串
给定一个字符串 s 请你找出其中不含有重复字符的 最长 子串 的长度。示例 1:输入: s “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”所以其长度为 3。注意 “bca” 和 “cab” 也是正确答案。示例 2:输入: s “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”所以其长度为 1。示例 3:输入: s “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”所以其长度为 3。请注意你的答案必须是 子串 的长度“pwke” 是一个子序列不是子串。主要思路就是滑动窗口哈希表dici是左指针(即滑动窗口前面一个j是遍历字符串s[j]用来取对应的字符如果碰到重复字符就更新一下左指针这个里面要注意取max也就是说i取这两个的里面大的那个不然碰到abba确保左指针不往左走class Solution:def lengthOfLongestSubstring(self, s: str) - int:dic,res,i{},0,-1for j in range(len(s)):if s[j] in dic:imax(dic[s[j]],i)dic[s[j]]jresmax(res,j-i)return res