吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2137|回复: 2
收起左侧

[Python 转载] [笔记]求最长子串

[复制链接]
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))代码已经通过了测试
[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

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
黑化的狂三 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

吾爱好地方 发表于 2018-11-26 23:50
谢谢楼主!!!
小黑LLB 发表于 2019-2-17 21:27
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 04:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表