源代码

function longestOverlappingSubstring(s) {
    let maxLength = 0;
    let longestSubstring = '';

    for (let len = 1; len <= s.length; len++) {
        for (let start = 0; start <= s.length - len; start++) {
            let substr = s.substring(start, start + len);
            let index = s.indexOf(substr, start + 1); // 查找下一个相同子串的起始位置

            if (index !== -1) { // 找到重复子串
                if (substr.length > maxLength) {
                    maxLength = substr.length;
                    longestSubstring = substr;
                }
            }
        }
    }

    return longestSubstring;
}

// 测试代码
const s = "ababababa";
const result = longestOverlappingSubstring(s);

console.log(`最长的可重叠的重复子串为: "${result}"`);

运行结果

最长的可重叠的重复子串为: "abababa"