lengthOfLongestSubstring
**lengthOflongestSubstring **
试例:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
/**
*
* @param {string} s
* 无重复字符的最长子串
*/
function lengthOfLongestSubstring(s) {
if (typeof s !== 'string' || s.length === 0) return 0;
const len = s.length;
let maxSubstring = s[0];
let substr = maxSubstring;
const maxLengthString = (a, b) => {
let result = a;
if (a.length < b.length) {
result = b;
return result;
}
return result;
};
for (let i = 1; i <= len; i += 1) {
if (substr.indexOf(s[i]) === -1) {
substr += s.substring(i, i + 1);
maxSubstring = maxLengthString(maxSubstring, substr);
} else {
substr = substr.substring((substr.indexOf(s[i]) + 1));
substr += s[i];
maxSubstring = maxLengthString(maxSubstring, substr);
}
}
// console.log(maxSubstring);
return maxSubstring.length;
}
写的测试
/**
*
* @param {number} count
* @param {number} length
*
* 生成 指定个数,指定长度随机 数字 字符串数组
*/
function randomString(count, length) {
const result = [];
for (let i = 0; i < count; i += 1) {
let str = '';
let len = length;
while (len > 0) {
str += `${Math.floor(Math.random() * 9 + 1)}`;
len -= 1;
}
result.push(str);
}
return result;
}