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小蜡肉
  • 相关阅读:
    ASM FailGroup验证
    oracle 11g RAC 补丁升级方法
    数据库优化一
    TypeScript(类—继承—多态)
    TypeScript(安装配置—数据类型—函数)
    IE9兼容
    移动端自适应vw、vh、rem
    npm命令随笔
    安卓、IOS兼容问题
    获取页面大小和元素位置offset、client、scroll
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9683025.html
Copyright © 2011-2022 走看看