zoukankan      html  css  js  c++  java
  • 无重复字符的最长子串

    给定一个字符串,找出不含有重复字符的最长子串的长度。

    示例:

    给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。

    给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。

    给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列  而不是子串。

    基本思路:将没有出现过的字符及其位置放入hash表中,并计数将s[i]与hash表中的字符对比,如果出现过,更新hash表中的位 置,并重新计数,最后输出最大数值

     1 class Solution:
     2     def lengthOfLongestSubstring(self,s):
     3         #基本思路:将没有出现过的字符及其位置放入hash表中,并计数
     4         # 将s[i]与hash表中的字符对比,如果出现过,更新hash表中的位
     5         # 置,并重新计数,最后输出最大数值
     6         res=0
     7         if s is None or len(s)==0:#如果字符串不存在或字符串为空的话
     8             return res #直接返回0
     9         ht={}
    10         temp=0
    11         start=0
    12         for i in range(len(s)):#循环字符串中的每个字符
    13             if s[i] in ht and ht[s[i]]>=start:#检查重复,
    14                 start=ht[s[i]]+1#记录当前字符串与hash表中重复字符的个数
    15             temp=i-start+1#记录hash表中字符个数
    16             ht[s[i]]=i#将没有出现过的字符及其位置存入hash表中
    17             res=max(res,temp)
    18         return res

    测试用例:

    1 s='pwwkew'
    2 b=Solution.lengthOfLongestSubstring(1,s)
    3 print(b)
  • 相关阅读:
    添加可运行的js代码
    一,IL访问静态属性和字段
    UI基础UIWindow、UIView
    ASP.NET MVC:会导致锁定的会话
    2013腾讯编程马拉松初赛
    使用phantomjs生成网站快照
    C语言
    设置 Ext.data.Store 传参的请求方式
    HDU 2041 超级楼梯
    MySQL 监控-innotop
  • 原文地址:https://www.cnblogs.com/zhibei/p/9279581.html
Copyright © 2011-2022 走看看