• Leetcode题库——3.无重复字符的最长子串



    @author: ZZQ
    @software: PyCharm
    @file: lengthOfLongestSubstring.py
    @time: 2018/9/18 20:35
    要求:给定一个字符串,找出不含有重复字符的最长子串的长度。
    e.g.: 输入: "abcabcbb"
    输出: 3
    解释: 无重复字符的最长子串是 "abc",其长度为 3。

          输入: "bbbbb"
          输出: 1
          解释: 无重复字符的最长子串是 "b",其长度为 1。
    
          输入: "pwwkew"
          输出: 3
          解释: 无重复字符的最长子串是 "wke",其长度为 3。
        !  请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串。
    

    思路: 使用一个字典来存储字符串中出现的每个字符在字符串中最近一次出现的索引,用一个整数来存储最近出现重复的下标位置。
    每次判当前字符是否发生了重复并且哦按段重复位置是否比之前记录的位置大,如果是则更新。

    class Solution(object):
        def lengthOfLongestSubstring(self, s):
            """
            :type s: str
            :rtype: int
            """
            s_len = len(s)
            if s is None or s_len == 0:
                return s_len
            max_sub_str_len = 0
            currentRepeatIndex = 0
            everySnearestIndex = {}
            for i in range(s_len):
                if s[i] in everySnearestIndex and everySnearestIndex[s[i]]>=currentRepeatIndex:
                    currentRepeatIndex = everySnearestIndex[s[i]] +1
                current_sub_str_len = i-currentRepeatIndex+1
                everySnearestIndex[s[i]] = i  # refresh the index of s[i]
                max_sub_str_len = max(max_sub_str_len, current_sub_str_len)
            return max_sub_str_len
    
    CV小蜡肉
  • 相关阅读:
    实现JavaScript自定义函数的整合、链式调用及类的封装
    jQuery事件
    jQuery特效
    jQuery基础细节
    CSS3盒模型
    主流清浮动方法
    JavaScript 执行环境及作用域
    JavaScript 参数传递与变量复制
    PHP雪花背景验证码
    Linkis 0.9.2 版本发布
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9683025.html
Copyright © 2020-2023  润新知