SOURCE

const resMap = new Map();

function findRepeatSubString(L, S) {
    const n = S.length;
    const set = new Set();
    for (let i = 0;i < n - L + 1;i++) {
        const subString = S.slice(i, i + L);
        if (set.has(subString)) {
            resMap.set(L, subString);
            return i;
        }
        set.add(subString);
    }
    return -1;
}

function findLongestRepeatSubString(S) {
    let left = 1, right = S.length;
    while(left <= right) {
        let mid = Math.floor((left + right) / 2);
        if (findRepeatSubString(mid, S) !== -1) left = mid + 1;
        else right = mid - 1;
    }
    return resMap.get(left - 1);
}
console.log(findLongestRepeatSubString("abbaba"))
console 命令行工具 X clear

                    
>
console