// JS模拟C语言经典四指针法
const checkReapetSubStr = (str1, str2) => {
let maxLength = 0;
let maxChar = '';
// 声明指针
let a = 0;
let b = a + 1;
let c = 0;
let d = c + 1
while (true) {
// 如果a指针和c指针不同
if (str1.charAt(a) !== str2.charAt(c)) {
c++
d++
} else {
// 如果ac指针相同并且bd指针也相同那么移动bd指针
while (true) {
if (str1.charAt(b) === str2.charAt(d)) {
b++
d++
// 重置最大子串
if (b - a > maxLength) {
maxLength = b - a
maxChar = str1.substring(a, b)
}
} else {
// 如果bd指针不同那么重置c指针位置继续比较
c = d
d = c + 1
b = a + 1
break
}
if (b >= str1.length || d >= str2.length) {
break
}
}
}
//验收,c、d发生了增长,防止cd超标
if (c >= str2.length || d >= str2.length) {
//如果c、d到头了,那么c、d归位,a右移
c = 0;
d = 1;
a++;
b = a + 1;
}
if (a >= str1.length) {
break
}
}
return maxChar;
}