JS模拟C语言经典四指针法
// 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; }