题解 | #密码截取#窗口移动,javascript
密码截取
http://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
从最大子串开始缩小窗口,不断移动窗口寻找合适子串
//javaScriptV8
str=readline();
const n=str.length
let l=1;//默认长度为1
function help(str, i, j){//重构寻找方法
if (str.length = 1) return true;
while (i < j) {//可以解决奇偶不同问题
if (str[i] !== str[j]) return false;
i++;
j--;
}
return true;
};
// function help(str){//超时
// if(str.split('').reverse().join('')==str) return true
// return false
// }
for(let i=n;i>1;i--){//利用窗口寻找
for(let j=0;j<=n-i;j++){
if( help( str,j,j+i-1 ) ){
l=i;//遇到合适立即跳出
break;
}
}
if(l>1) break;//跳出多重循环
}
console.log(l)
使用数组reverse方法判断会导致超时
方法改进来自https://blog.nowcoder.net/n/2c488259ec63452093ff1f3ed066dc06