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)
  • 相关阅读:
    字符流中第一个不重复的字符 python实现
    当当网爬虫
    第六周---事后分析
    第四周的菜鸡互啄
    菜鸡互啄队——软件需求规格说明书
    菜鸡互啄队—— 团队合作
    Hadoop综合大作业
    分布式文件系统HDFS 练习
    安装Hadoop
    爬取全部的校园新闻
  • 原文地址:https://www.cnblogs.com/zhibei/p/9279581.html
Copyright © 2011-2022 走看看