Alomerry Wu @ alomerry.com

3. 无重复字符的最长子串

Jul 7, 2023 · 1min · 343 ·

Description

Difficulty: 中等

Related Topics: 哈希表, 字符串, 滑动窗口

给定一个字符串 s ,请你找出其中不含有重复字符的 **最长子串 **的长度。

示例 1:

输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

提示:

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

Solution

子串,表示必须的连续的,是原始串的一部分。使用 queue 用来存储当前的子串,用 bool 数组记录当前队列的子串中包含的字符。

依次将原始串中的字符 push 到队列,同时将该字符标记为已存在。在 push 前验证当前字符是否存在,已存在则依次将队头 pop,知道当前字符不存在。在 push 后验证当前队列的子串长度是否比已经记录的 max 值大。

 
 comment..
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.0.1
Theme by antfu
2018 - Present © Alomerry Wu