leecode1023.驼峰式匹配

题目

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

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

示例

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/camelcase-matching
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

采用双指针进行匹配

代码

class Solution {
public:
    bool check(string str, string pattern){
        int t1 = 0, t2 = 0;
        while(t1 < str.size() && t2 < pattern.size()){
            if(str[t1] == pattern[t2]) t1++, t2++;
            else if(str[t1] >= 'A' && str[t1] <= 'Z') return false;//未匹配上且出现了大写字母
            else t1++;
        }
        if(t2 <  pattern.length()) return false;//pattern没有匹配完,返回false
        while(t1 < str.length()){//pattern匹配完了,但是后面s中可能还会有大写字母
            if(str[t1] >= 'A' && str[t1] <= 'Z')
                return false;
            t1++;
        }
        return true;
    }
    vector<bool> camelMatch(vector<string>& queries, string pattern) {
        vector<bool> ans;
        for(auto s : queries)   ans.push_back(check(s, pattern));
        return ans;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值