【Leetcode】无重复字符的最长子串 @ systemime | 2022-01-27T18:25:18+08:00 | 1 分钟阅读 | 更新于 2022-01-27T18:25:18+08:00

描述

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是
“abc”,所以其长度为 3。

示例 2:

输入: s = “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b” ,所以其长度为 1。

示例 3:

输入: s = “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。

请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

示例 4:

输入: s = ""
输出: 0

提示:

0 <= s.length <= 5 * 104

s 由英文字母、数字、符号和空格组成

Related Topics

  • 哈希表
  • 字符串
  • 滑动窗口

👍 6817
👎 0

题解

python

一开始想用集合添加判断长度的方式去写,但是后来发现不好定位下一个不重复子串位置,于是用列表做

"""
6:31 PM	info
		解答成功:
		执行耗时:44 ms,击败了76.76% 的Python用户
		内存消耗:13.2 MB,击败了94.93% 的Python用户
"""
class Solution(object):
    def lengthOfLongestSubstring(self, s):

        if not s:
            return 0

        max_str = []
        max_len = 0
        tmp_len = 0  # 记录当前数组长度,减少调用len方法次数
        for val in s:
            
            if val in max_str:
                idx = max_str.index(val)
                max_len = tmp_len if tmp_len > max_len else max_len
                max_str = max_str[idx + 1:]  # 将重复字符及其以前全部丢弃
                tmp_len -= idx + 1  # 记录长度
            max_str.append(val)
            tmp_len += 1

        return tmp_len if tmp_len > max_len else max_len

© 2018 - 2022 systemime 的博客

Powered by Hugo with theme Dream.

---

avatar
关于我

systemime 的博客

记录一些生活与技术的事或思考

毕业于 🏫 山东科技大学泰山科技学院

目前职位为Python后端开发工程师

热爱代码,热爱开源

主要的技术栈是:

  • python
  • celery
  • django
  • shell
  • sql
  • go
  • nginx

爱好

  • 羽毛球
  • 编码
我的一些开源项目

计划或项目:

  • skill_test ➡️ 一个包含项目常用的django模板:常用脚本、单测方法、数据库连接池、异步请求池,restful风格的回调接口管理器 60%
  • Vbox ➡️ 一个基于k8s和docker的容器云平台,早期项目代码较简单 90%
  • YuQue-Assistant ➡️ 用于批量拉取语雀工作区文章,使用进程池+协程
  • 一个代理池 60%
  • simple_db_pool ➡️ 一个简单数据库连接池 100%
  • 一个电报消息转发脚本 90%
  • 使用flutter做一个app 计划中
  • 其他若干脚本(bilibili、微博图片视频下载、文件对比、图片颜色提取…)
其他

如果你喜欢我的博客、开源项目或者它们可以给你带来帮助,可以赏一杯咖啡 ☕ 给我。~

If you like my open source projects or they can help you. You can buy me a coffee ☕.~

PayPal

https://paypal.me/systemime

支付宝赞赏码

alipay

微信赞赏码

wechat

最好附加一下信息或者留言,方便我可以将捐助记录 📝 下来,十分感谢 🙏。

It is better to attach some information or leave a message so that I can record the donation 📝, thank you very much 🙏.