3. 無重複字符的最長子串
題目描述:給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。
example:
輸入: “abcabcbb”
輸出: 3
解釋: 因爲無重複字符的最長子串是 “abc”,所以其長度爲 3。
題目主要考察點是判斷是否重複,並且在無重複的範圍內找到最長的子串
var lengthOfLongestSubstring = function(s) {
if (s.length === 0) return 0;
let res = 0;
let j = 0, t = 0;
for (let i = 0; i < s.length; i++) {
t = s.slice(j, i).indexOf(s[i]);
if (t === -1) {
// 不存在
res = Math.max(res, i - j + 1);
} else {
// 存在
j = j + t + 1;
}
}
return res || 1;
}
1、判斷s的長度是否爲0, 如果爲0那麼直接返回不需要進行處理
2、記錄變量,res最長子串長度,j下一次的起點,t存在的下標
3、循環字符串從0開始並進行截取從j開始到i的串長進行當前字符的判斷,如果存在則返回下標,如果不存在則返回-1(可以繼續往前走)
4、當爲-1時也要更新當前的最大值,因爲下標比長度小1,所以要加1
5、當存在的時候那麼需要找到第一個重複的下標,並從這個下標繼續截取字符串進行下一次的判斷即可。
題目鏈接:無重複字符的最長子串
大家繼續加油啊!!!