题解 | #查找两个字符串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);