资讯专栏INFORMATION COLUMN

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

qc1iu / 3329人阅读

摘要:示例输入输出解释因为无重复字符的最长子串是,所以其长度为。请注意,你的答案必须是子串的长度,是一个子序列,不是子串。完成循环后取队列中出现的最大长度即可。

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

示例 1:

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

示例 2:

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

示例 3:

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

实现思路:

一个简单的滑动块的操作,利用一个队列作为滑块,循环过程中元素不断进入这个队列,作为子串,一旦遇到有重复的元素,就将其本身及左边的元素移出。完成循环后取队列中出现的最大长度即可。

我实现中有一个的小技巧,在剔除重复子串的操作中,我没有将队列进行循环剔除,而是记录重复子串出现的位置,利用 slice 将队列进行一次性切割,提高算法性能。

我的实现:

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
  let queue = []
  let result = 0
  const sLen = s.length
  for (let i = 0; i < sLen; ++i) {
    const item = s[i]
    const index = queue.indexOf(item)
    queue.push(item)
    if (-1 !== index) queue = queue.slice(index + 1)
    else result = Math.max(result, queue.length)
  }
  return result
};

成绩:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105401.html

相关文章

  • LeetCode3.重复字符最长子串JavaScript

    摘要:示例输入输出解释因为无重复字符的最长子串是,所以其长度为。请注意,你的答案必须是子串的长度,是一个子序列,不是子串。 LeetCode3.无重复字符的最长子串JavaScript 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例 1: 输入: abcabcbb输出: 3 解释: 因为无重复字符的最长子串是 abc,所以其长度为 3。 示例 2: 输入: bbbbb输出...

    vboy1010 评论0 收藏0
  • LeetCode.3 重复字符最长子串(JS)

    摘要:先跳到第三题是因为第二题第一眼没读懂一题目无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例输入输出解释因为无重复字符的最长子串是,所以其长度为。以此来实现判断是否包含重复字符。 先跳到第三题是因为第二题第一眼没读懂 一、题目 无重复字符的最长子串: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例1 输入: abcabcbb输...

    wthee 评论0 收藏0
  • LeetCode 3——重复字符最长子串

    摘要:题目解答方法一我们从前往后遍历字符串,代表最长子串的起始位置,一开始设置为零。如果没有遇到重复字符,则更新子串的长度,向后遍历。最长子串的起始位置重复的字符在子串中的位置初始化映射自动初始化为零获取更多精彩,请关注 1. 题目 showImg(https://segmentfault.com/img/remote/1460000016867082); 2. 解答 2.1. 方法一 我们...

    Rocture 评论0 收藏0
  • leetcode 重复字符最大子串

    摘要:示例输入输出解释因为无重复字符的最长子串是,所以其长度为。请注意,你的答案必须是子串的长度,是一个子序列,不是子串。临时存储子串存储最长子串如果子串中不存在如果子串中存在重复字符的位置截取字符串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: abcabcbb 输出: 3 解释: 因为无重复字符的最长子串是 abc,所以其长度为 3。 示例 2...

    laoLiueizo 评论0 收藏0
  • 力扣(LeetCode)3

    摘要:示例输入输出解释因为无重复字符的最长子串是,所以其长度为。请注意,你的答案必须是子串的长度,是一个子序列,不是子串。若没有重复元素,则区间右边扩大,否则区间左边缩小。 题目地址:https://leetcode-cn.com/probl...题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: abcabcbb输出: 3 解释: 因为无重复字符...

    _DangJin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<