python实现leetcode之3. 无重复字符的最长子串

https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

解题思路

一遍扫描,碰到出现过的字符时:
1.更新更新当前不重复字符串的开始下标
2.如果不包括当前字符的不重复字符串到目前为止最长,更新rtv

代码

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        rtv = 0
        seen = {}
        start_idx = 0  # 当前无重复字符串的开始位置
        for idx, c in enumerate(s):
            if seen.get(c, -1) >= start_idx:
                # 更新当前不重复字符串的开始下标
                rtv = max(rtv, idx-start_idx)
                start_idx = seen[c] + 1
            seen[c] = idx
        return max(rtv, len(s)-start_idx)
执行效果图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容