【中等】算法nodeJs:公共子串计算

91 阅读1分钟

描述

对于给定的两个字符串 s 和 t,你需要找出它们的最长公共子串的长度。

子串为从原字符串中,连续的选择一段字符(可以全选、可以不选)得到的新字符串。
如果字符串 a 的一个子串 a′ 与字符串 b 的一个子串 b′ 完全相等,那么子串 a′,b′ 是字符串 a,b 的一个公共子串。

输入描述:

第一行输入一个长度为 1≦len(s)≦150、仅由小写字母组成的字符串 s。
第二行输入一个长度为 1≦len(t)≦150、仅由小写字母组成的字符串 t。

输出描述:

输出一个整数,代表 s 和 t 的最长公共子串的长度。

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    const s = await readline();
    const t = await readline();
    let maxLen = 0;
    for (let i = 0; i < s.length + 1; i++) {
        for (let j = i + 1; j < s.length + 1; j++) {
            if (t.indexOf(s.slice(i, j)) !== -1)
                maxLen = Math.max(s.slice(i, j).length, maxLen);
        }
    }
    console.log(maxLen);
})();