zoukankan      html  css  js  c++  java
  • 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;
      }
      
  • 相关阅读:
    Codeforces Round #632 (Div. 2) D-Challenges in school №41(模拟好题)
    余数求和
    B. 齐心抗疫
    MyBatis源码分析
    关于Idea中右边的maven projects窗口找不到了如何调出来
    IDEA java类文件左下角出现红色的J标识,解决方法
    Postman Tests脚本的使用
    JSONPath解析json
    Postman + Newman 生成测试报告
    TestNG 多线程测试
  • 原文地址:https://www.cnblogs.com/worldline/p/15165865.html
Copyright © 2011-2022 走看看