• 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小蜡肉
  • 相关阅读:
    Swing 添加Esc快捷键退出程序
    DefaultTableCellRenderer 自定义
    项目清理和删除svn信息(转)
    时间转换工具类
    Java Swing 日期控件(转载)
    Eureka原理
    SpringCloud之Eureka注册中心集群篇
    spring boot及spring cloud介绍
    spring cloud 服务注册/发现/提供/调用 demo
    eclipse构建maven+scala+spark工程
  • 原文地址:https://www.cnblogs.com/zzq-123456/p/9683025.html
Copyright © 2020-2023  润新知