Leetcode Longest Substring Without Repeating Characters & 无重复字符的最长子串 解题报告

  1. 问题描述
    • 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
  2. 测试用例
    示例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
  3. 补充说明
    • 0 <= s.length <= 5 * 104

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

  4. 解题报告

    主要思路是使用滑动窗口,分别使用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;
    }
    
posted @   别摸我键盘  阅读(28)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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)
点击右上角即可分享
微信分享提示