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小蜡肉
  • 相关阅读:
    spirngmvc整合mybatis
    C#微信支付
    centos mysql数据库主从同步
    centos 搭建ftp
    修改 Docker 默认网桥地址
    安装docker
    脚本自动化装centos6.5 python2.6升级2.7
    centos6.5 python2.6升级2.7
    weblogic 安装及发布web应用
    centos6.5安装pip方法
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9683025.html
Copyright © 2011-2022 走看看