美文网首页
Leetcode Longest Substring Witho

Leetcode Longest Substring Witho

作者: 别摸我的键盘 | 来源:发表于2021-08-20 11:33 被阅读0次
  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
  1. 补充说明
    • 0 <= s.length <= 5 * 104
    • s 由英文字母、数字、符号和空格组成
  2. 解题报告

    主要思路是使用滑动窗口,分别使用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;
    }
    

相关文章

网友评论

      本文标题:Leetcode Longest Substring Witho

      本文链接:https://www.haomeiwen.com/subject/vjctiltx.html