前段时间做了不少题,但是没来得及整理思路写出来,今天难得有时间,来分享一下第三题的做法。
此题是找寻无重复字符最大子串的长度,题目介绍中对子串的要求体现的很清楚了,这种题目我们肯定不能采用暴力方法来记录 每一个子串的长度,这样做的时间、空间复杂度太高。
所以我选择进行一次遍历,通过对每个字符进行类似于哈希的记录,记录两个重复字符之间的距离最大值。
var lengthOfLongestSubstring = function(s) {
let result = 0;
let start = 0;
let value = {};
for (let i = 0; i < s.length; i++){
if (start <= value[s[i]]){
start = value[s[i]] + 1;
} else{
result = Math.max(result, i - start + 1);
}
value[s[i]] = i;
}
return result;
};