zoukankan      html  css  js  c++  java
  • 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变量作用域
    phpcms v9取消验证码
    typecho去index.php
    cms与blog汇总
    phpcms修改增加编辑时摘要自动提取的数量
    phpcms后台主菜单不显示
    phpcms sitemaps修改
    phpcms打印数据
    phpcms tag页调用缩略图
    php自动添加相关文章
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9683025.html
Copyright © 2011-2022 走看看