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;
      }
      
  • 相关阅读:
    python 字典
    python 列表、元组 for 循环
    python字符串
    python之while 循环 格式化、运算符、编码
    Python变量命名的规范、if else 条件语句
    Linux文件管理-主题2
    Linux系统管理-主题1
    Linux操作系统零基础入门学习3
    CCF--二十四点
    第一个Python程序
  • 原文地址:https://www.cnblogs.com/worldline/p/15165865.html
Copyright © 2011-2022 走看看