zerglurker 发表于 2018-11-26 21:45

[笔记]求最长子串

本帖最后由 wushaominkk 于 2018-11-28 10:44 编辑

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
    请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
输入 "dvdf"
输出: 3我又来了,今天没有时间,发一个之前做的思路是这样的,遍历每个字符,如果遇到相同的,则计算长度,超过已有的,则记录然后从上一次重复的字符开始,组合新的子串,直到结束或者遇到新的重复字符这样,时间复杂度接近线性(即O(n))代码已经通过了测试class Solution:
    def lengthOfLongestSubstring(self, s):
      """
      :type s: str
      :rtype: int
      """
      length = len(s)
      data = dict()
      cur = ''
      max = 0
      for i in range(length):
            c = s
            index = cur.find(c)
            if index == -1:
                cur += c
            else:
                l = len(cur)
                if cur not in data:
                  data = l
                  if l > max:
                        max = l
                if index == l - 1:
                  cur = c
                else:
                  cur = cur + c
      l = len(cur)
      if cur not in data:
            if l > max:
                max = l
      return max

吾爱好地方 发表于 2018-11-26 23:50

谢谢楼主!!!

小黑LLB 发表于 2019-2-17 21:27

学到了 感谢分享{:1_893:}
页: [1]
查看完整版本: [笔记]求最长子串