JS算法题之无重复字符的最长子串
题目描述
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
解答
维护一个数组用于存放无重复子串,遍历输入的字符串,若当前字符不在无重复数组中,则添加,否则,无重复数组清空,并push当前字符。
同时要维护另外一个最长无重复子串的数组。
var lengthOfLongestSubstring = function(s) {
let max = 0, maxArr = [], oldArr= [];
s.split('').forEach((ele, index) => {
if(maxArr.indexOf(ele) === -1){
maxArr.push(ele)
if(maxArr.length > max){
max = maxArr.length;
}
}
else{
maxArr = [ele]
let tempItem = oldArr.pop();
while(tempItem != ele){
maxArr.unshift(tempItem)
tempItem = oldArr.pop();
}
}
oldArr = [...maxArr]
})
return max;
};本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!