给定一个字符串 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://www.chenhuax.com/read/412