Leetcode Longest Substring Without Repeating Characters & 无重复字符的最长子串 解题报告
-
问题描述
- 给定一个字符串
s
,请你找出其中不含有重复字符的 最长子串 的长度。
- 给定一个字符串
-
测试用例
示例1
- 输入: s = "abcabcbb"
- 输出: 3
- 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例2
- 输入: s = "bbbbb"
- 输出: 1
- 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
- 输入: s = "pwwkew"
- 输出: 3
- 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
- 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
示例 4:
- 输入: s = ""
- 输出: 0
示例5
- 输入:s=“ ”
- 输出:1
示例6
- 输入:s=“ ”
- 输出:1
-
补充说明
-
0 <= s.length <= 5 * 104
-
s
由英文字母、数字、符号和空格组成
-
-
解题报告
主要思路是使用滑动窗口,分别使用start、end 指针,前提是保证两个指针单调递增,剩余逻辑就是处理指针移动的逻辑。
java代码如下:
public int lengthOfLongestSubstring(String s) { int start = 0; int end = 0; int res = 0; //记录出现的位置 int[] array = new int[128]; while (end < s.length()) { int index = s.charAt(end); //移动start指针 start = Math.max(start, array[index]); //移动end指针 end += 1; //计算最大窗口 res = Math.max(res, end - start); //记录出现字符位置,重置start指针准备 array[index] = end; } return res; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)