0%

4-14每日

1023. 驼峰式匹配

如果我们可以将小写字母插入模式串 pattern 得到待查询项 query,那么待查询项与给定模式串匹配。(我们可以在任何位置插入每个字符,也可以插入 0 个字符。)

给定待查询列表 queries,和模式串 pattern,返回由布尔值组成的答案列表 answer。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 true,否则为 false

示例 1:

输入:queries = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], pattern = "FB"
输出:[true,false,true,true,false]
示例:
"FooBar" 可以这样生成:"F" + "oo" + "B" + "ar"。
"FootBall" 可以这样生成:"F" + "oot" + "B" + "all".

题解

/**
 * @param {string[]} queries
 * @param {string} pattern
 * @return {boolean[]}
 */
var camelMatch = function(queries, pattern) {
    let res = [];
    if (!queries || queries.length === 0) {
        return res;
    }
    for (let i = 0; i < queries.length; ++i) &#123;
        res.push(match(queries[i], pattern));
    &#125;
    return res;
&#125;;

function match(str, pattern) &#123;
    let j = 0;
    for (let i = 0; i < str.length; ++i) &#123;
        if (j < pattern.length && str[i] === pattern[j]) &#123;
            ++j;
        &#125;
        // 若str出现在pattern中不存在的大写字母,则直接返回false
        else if (str[i] >= 'A' && str[i] <= 'Z') &#123;
            return false;
        &#125;
    &#125;
    return j === pattern.length;
&#125;