HJ65 查找两个字符串a,b中的最长公共子串

94 阅读1分钟

image.png

const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
let inputArr = []; //存放输入的数据
rl.on("line", function (line) {
    inputArr.push(line);
}).on("close", function () {
    console.log(maxString(inputArr[0], inputArr[1])); //调用函数并输出
});

function maxString(a, b) {
    // 长的字符串放在前面
    if (a.length < b.length) {
        [a, b] = [b, a];
    }
    let res = "";
    // 循环短的字符串
    for (let l = 0; l < b.length; l++) {
        // 第二个指针的移动
        for (let r = l + 1; r <= b.length; r++) {
            // 如果截取的这段字符串存在,且a里面也存在,就获取这段字符串
            if (r - l > res.length && a.indexOf(b.slice(l, r)) !== -1) {
                res = b.slice(l, r);
            }
        }
    }
    return res;
}

查找两个字符串a,b中的最长公共子串_牛客题霸_牛客网 (nowcoder.com)