美团前端笔试8.27(求思路~)

美团编程两题,比8.13难

第一题:匹配字符串(70%+)

本来想用正则的,后来发现正则不是一个好办法,后面用了遍历分割字符串再进行判断,不知道为什么只过了70%+,应该是题目有部分理解错了

function fn(S, s, n, m) {
    let count = 0;

    for (let i = 0; i <= n - m; i++) {
        let temp = S.slice(i, i+m);
        console.log('t', temp)
        if (isValid(temp, s)) {
            console.log(temp)
            count++;
        }
    }

    return count;

}
function isValid(S, s) {
    let index = 0;
    while (index < S.length) {
        if (S[index] === s[index] || s[index] === '*') {
            index++;
        } else {
            return false;
        }
    }

    return true;
}

第二题:裁缝(60%)

我用的全排列,过了60%

function fn(n, m , S, lens, strs) {
    let sum = lens.reduce((p, v) => p + v, 0);
    if (sum !== n) return 0;

    let res = totalSort(strs);

    let count = 0;

    for (let item of res) {
        if (item.join('') === S) {
            count++;
        } else {
            continue;
        }
    }

    return count;

    // 全排列
    function totalSort(strs) {
        let res = [];
        let visited = new Array(m).fill(false);
        dfs([], 0);
        return res;
        function dfs(path, index) {
            if (path.length === m) {
                res.push([...path]);
                return;
            }


            for (let i = 0; i < strs.length; i++) {
                if (visited[i] || (i > 0 && strs[i] === strs[i-1] && !visited[i-1])) continue;

                path.push(strs[i]);
                visited[i] = true;
                dfs(path, index+1);
                visited[i] = false;
                path.pop();
            }
        }
    }
}
#美团笔试#
全部评论
看完眼前一晕
点赞 回复 分享
发布于 2022-08-29 10:12 江苏

相关推荐

三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
1 11 评论
分享
牛客网
牛客企业服务