元宝 LeetCode 3.无重复字符的最长子串 Python3实现

元宝    LeetCode 3.无重复字符的最长子串  Python3实现 这是LeetCode 3无重复字符的最长子串的Python3 实现使用滑动窗口双指针时间复杂度O(n)是最推荐的解法。✅ 思路滑动窗口用两个指针left和right维护一个窗口用一个set记录当前窗口中的字符right向右扩展窗口如果出现重复字符就不断移动left缩小窗口每次更新最大长度✅ Python3 实现标准解法class Solution: def lengthOfLongestSubstring(self, s: str) - int: char_set set() left 0 max_len 0 for right in range(len(s)): # 如果当前字符已存在收缩左边界 while s[right] in char_set: char_set.remove(s[left]) left 1 char_set.add(s[right]) max_len max(max_len, right - left 1) return max_len✅ 示例s abcabcbb print(Solution().lengthOfLongestSubstring(s)) # 输出: 3✅ 复杂度分析时间复杂度O(n)每个字符最多进/出窗口一次空间复杂度O(min(n, 字符集大小))✅ 进阶版本用字典优化如果你追求极致性能可以用dict记录字符最新下标减少while循环class Solution: def lengthOfLongestSubstring(self, s: str) - int: last_seen {} max_len 0 left 0 for right in range(len(s)): if s[right] in last_seen: left max(left, last_seen[s[right]] 1) last_seen[s[right]] right max_len max(max_len, right - left 1) return max_len如果你需要逐行讲解 / 图解过程 / 面试版回答 / 多语言对比我也可以继续帮你