[笔记]求最长子串
本帖最后由 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 谢谢楼主!!! 学到了 感谢分享{:1_893:}
页:
[1]