本文来源吾爱破解论坛
本帖最后由 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))代码已经通过了测试[Python] 纯文本查看 复制代码
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[i] index = cur.find(c) if index == -1: cur += c else: l = len(cur) if cur not in data: data[cur] = l if l > max: max = l if index == l - 1: cur = c else: cur = cur[index + 1:] + c l = len(cur) if cur not in data: if l > max: max = l return max
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。