给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/
示例
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
解析
1)这是一个典型的双指针问题,如果右指针在没有相同元素的时候,可以一直往前移动;
2)左指针只有在遇到相同元素时,才往前移动;
3)需要注意的是,列表可能只有一个元素,就直接返回即可。
代码示例
class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if len(s) == 1: return 1 max_len = 0 left = 0 right = 1 while right < len(s): if s[right] not in s[left:right]: right += 1 if right - left > max_len: max_len = right - left else: left += 1 return max_len
执行用时:52 ms, 在所有 Python3 提交中击败了 95.99% 的用户.
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/412