当前位置: 首页 > news >正文

【leetcode】3. 无重复字符的最长子串

文章目录

    • 题目
    • 题解
      • 1. 暴力求解+集合
      • 2. 滑动窗口

题目

3. 无重复字符的最长子串

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

示例 1:

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

示例 2:

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

示例 3:

输入: s = “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。

题解

1. 暴力求解+集合

在这里插入代码片class Solution(object):def lengthOfLongestSubstring(self, s):""":type s: str:rtype: int"""if len(s) == 0:return 0# 暴力求解result = 0n = len(s)for i in range(n):seen = set()lenth = 0 for j in range(i, n):if s[j] not in seen:seen.add(s[j])lenth += 1else:breakresult = max(result, lenth)return result

2. 滑动窗口

class Solution(object):def lengthOfLongestSubstring(self, s):""":type s: str:rtype: int"""# 使用一个集合来记录当前窗口内的字符char_set = set()left = 0  # 窗口的左边界max_len = 0  # 记录最长子串的长度for right in range(len(s)):# 如果字符已经在集合中,移动左边界while s[right] in char_set:char_set.remove(s[left])  # 移除左边界的字符left += 1  # 将左边界向右移动# 将当前字符加入集合char_set.add(s[right])# 更新最长子串长度max_len = max(max_len, right - left + 1)return max_len
http://www.lqws.cn/news/189757.html

相关文章:

  • 跟我学c++中级篇——理解类型推导和C++不同版本的支持
  • 如何在Lyra中创建一个新的Game Feature Plugin和Experience游戏体验
  • 前端flex、grid布局
  • idea中 maven 本地仓库有jar包,但还是找不到,解决打包失败和无法引用的问题
  • AC68U刷梅林384/386版本后不能 降级回380,升降级解决办法
  • day35-系统编程之网络编程IV及MQTT协议
  • docker数据管理
  • hot100 -- 8.二叉树系列
  • 父组件prop传向子组件的值,被子组件直接v-model绑定 功能不生效
  • JavaWeb笔记
  • 每日八股文6.6
  • kafka消息积压排查
  • 深入理解指针(二)
  • 我爱学算法之—— 前缀和(中)
  • echarts树状图与vue3
  • 【机械视觉】Halcon—【十一、车牌检测和筛子检测】
  • Oracle 用户名大小写控制
  • CSS6404L 在物联网设备中的应用优势:低功耗高可靠的存储革新与竞品对比
  • PyQt6 GUI应用程序开发实操指南
  • 2025最新VMware17如何通过官网进行下载
  • 中科院1区顶刊|IF14+:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点
  • 车辆测试数据采集解决方案:同步支持总线协议、模拟传感与远程监控的关键技术
  • 理解JavaScript中map和parseInt的陷阱:一个常见的面试题解析
  • Excel 表格内批量添加前缀与后缀的实用方法
  • 区块链可投会议CCF A--SP 2026 截止11.13 附录用率
  • 在MyBatis中设计SQL返回布尔值(Boolean)有几种常见方法
  • Python数学可视化:3D参数曲面与隐式曲面绘制技术
  • Skia如何绘制几何图形
  • Linux驱动学习day2
  • vm+ubuntu24.04扩展磁盘