來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
給定一個字符串钥庇,請你找出其中不含有重復字符的 最長子串 的長度牛哺。
示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 因為無重復字符的最長子串是 "abc"怔锌,所以其長度為 3谤饭。
解題思路:
滑動窗口解法弧可。維護一個數(shù)組為“滑動窗口”择克,遍歷字符串拳恋,當滑動窗口中沒有出現(xiàn)過當前字符時终畅,將當前字符push進滑動窗口榜旦,如果滑動窗口中出現(xiàn)過當前字符幽七,則需要先將滑動窗口中該字符以及該字符之前的所有字符刪除,再將當前字符push進入滑動窗口溅呢。
a b c a c
遍歷a 滑動窗口:a
遍歷b 滑動窗口:a b
遍歷c 滑動窗口:a b c
遍歷a 滑動窗口:b c a
遍歷c 滑動窗口:a c
解題:
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
var arr = [],max = 0;
for(var i = 0;i < s.length;i++) {
if(arr.indexOf(s.charAt(i)) !== -1) {
var index = arr.indexOf(s.charAt(i));
arr.splice(0, index+1);
}
arr.push(s.charAt(i));
max = Math.max(max,arr.length);
}
return max;
};