给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。
给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。
给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) {
if (!s || typeof s !== "string") return
var max;
var maxNum = 1
for (var i = 0, l = s.length; i < l; i++) {
max = 1;
for (var j = i + maxNum; j < l; j++) {
if (j - i === 1 && s[j] !== s[i]) {
max++
maxNum = max > maxNum ? max : maxNum
continue
}
var str = s.substr(i, j - 1)
if (str.indexOf(s[j]) === -1) {
max++
maxNum = max > maxNum ? max : maxNum
} else {
break
}
}
}
return maxNum
};
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) {
if (!s || typeof s !== "string") return
var _obj = {};
var l = s.length;
var k = 0;
var i = 0;
var maxNum = 1;
while (i < l) {
if (!_obj[s[i]]) {
_obj[s[i]] = 1;
i++
}
if (_obj[s[i]] === 1) {
maxNum = i - k > maxNum ? i - k : maxNum;
k++
i = k;
_obj = {}
}
}
return maxNum
};