关于javascript:Leetcode剑指offer16不含有重复字符的最长子字符串

Leetcode16不含有反复字符的最长子字符串

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

答题:

/**
 \* @param {string} s
 \* @return {number}
 */
var lengthOfLongestSubstring = function(s) {
  let queue = []
  let maxLen = 0 
  for(let i=0;i<s.length;i++){
​    if(queue.includes(s[i])){
​      queue.splice(0,1+queue.indexOf(s[i]))
​      queue.push(s[i])
​    }else{
​      queue.push(s[i])
​      maxLen = Math.max(maxLen,queue.length)
​    }
  }
  return maxLen
};

实际上是考查你一个滑动窗口的问题,queue中蕴含了一个不蕴含反复字符的数组,如果有新加进来的字符在数组中有反复,则剔除queue中的该字符以及之前的字符。没有的话就比拟一下以后数组的长度和上一个len的大小,留神这里不是++哦

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理