题解 | #密码截取#窗口移动,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

全部评论

相关推荐

牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务