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的大小,留神这里不是++哦