题解 | #左旋转字符串#
最长不含重复字符的子字符串
http://www.nowcoder.com/practice/48d2ff79b8564c40a50fa79f9d5fa9c7
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
考虑以字串第i个元素结尾的不重复子串的长度和该子串,substr初始化为s[0],arr[0]=1
*
* @param s string字符串
* @return int整型
*/
function lengthOfLongestSubstring( s ) {
if(!s){
return 0
}
let substr = s[0]
let arr = [1]
for(let i =1;i<s.length;i++){
let index = substr.lastIndexOf(s[i]) // s[i]在上一步的最大字串中出现
if(index >-1){
arr[i] = substr.length - index
substr= substr.slice(index +1 ) + s[i] // 更新状态
}else{
substr += s[i]
arr[i] = arr[i-1]+ 1 // 否则拼接
}
}
return Math.max(...arr)
// write code here
}
module.exports = {
lengthOfLongestSubstring : lengthOfLongestSubstring
};