3. 无重复字符的最长子串(中等)-滑动窗口

2023-05-18  本文已影响0人  MatrixZ

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

分析

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        # 边走边滑动,用字典记住初始位置
        alpha_to_index = {}
        # 记录窗口开始位置
        start_index = 0
        max_len = 0
        for i, alpha in enumerate(s):
            if alpha in alpha_to_index and alpha_to_index[alpha] >= start_index:
                max_len = max(max_len, i - start_index)
                # 要从之前的相同的字母位置+1开始算起
                start_index = alpha_to_index[alpha] + 1
            
            alpha_to_index[alpha] = i
        
        n = len(s)
        
        max_len = max(max_len, n - start_index)

        return max_len
上一篇 下一篇

猜你喜欢

热点阅读