题解 | #公共子串计算#
公共子串计算
https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b
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 let arr = []; while(line = await readline()){ arr.push(line); } let str1 = arr[0]; let str2 = arr[1]; // 用短字符串匹配长字符串,短的不断从头遍历对比,从而获得结果 if(str1.length > str2.length) { [str1, str2] = [str2, str1]; } let res = []; let _str1 = ''; // 建立窗口 for(let i = str1.length; i > 0; i--) { // 窗口解法,通过给短字符串从大到小的窗口,从而找到最大匹配项,只需要匹配了,就是最大的 for(let j = 0; j <= str1.length - i; j++) { _str1 = str1.substring(j, j + i); if(str2.includes(_str1)) { console.log(i); return; } } } console.log(0); return; }()