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;
      }
      
  • 相关阅读:
    Hadoop 2.2.0单节点的伪分布集成环境搭建
    CentOS系统中出现错误--SSH:connect to host centos-py port 22: Connection refused
    JUnit 5和Selenium基础(三)
    JUnit 5和Selenium基础(二)
    JUnit 5和Selenium基础(一)
    如何对N个接口按比例压测
    性能测试中标记每个请求
    初学者的API测试技巧
    Web安全检查
    Groovy重载操作符
  • 原文地址:https://www.cnblogs.com/worldline/p/15165865.html
Copyright © 2011-2022 走看看