题解 | #查找两个字符串a,b中的最长公共子串#判断刚好

查找两个字符串a,b中的最长公共子串

https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506

let s1 = readline();
let s2 = readline();
let tmp = "";
if (s1.length > s2.length) {
  tmp = s1;
  s1 = s2;
  s2 = tmp;
}

let myS = "";
let s_window = "";
let flag;

//滑动窗口 右边界每次i++放进去。左边界:如果子串重合,左不动;如果不重合,左边界删掉头部
//左边删掉头部后,右边界可以继续+1,因为上一个myS已经是同等数量中最早出现的,所以并不需要再次判断同等数量的新串
for (let i = 0; i < s1.length; i++) {
  s_window += s1[i];
  //   flag = new RegExp(s_window).test(s2);//每次循环都需要创建一个regexp对象,内存消耗太多
  flag = s2.indexOf(s_window); //所以用indexOf
  if (flag != -1) {
    myS = s_window.length > myS.length ? s_window : myS;
  } else {
    s_window = s_window.slice(1);
  }
}

print(myS);

全部评论

相关推荐

06-04 19:53
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务