题解 | #公共子串计算#

公共子串计算

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;
}()

全部评论

相关推荐

豆泥🍀:同26届,加油,我也还没找到查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务