[前缀树]leetcode1023:驼峰式匹配(medium)

本文深入探讨了一种模式匹配算法,通过遍历查询项与模式串进行对比,实现精确匹配。文章详细介绍了算法的三种匹配情况及其实现逻辑,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:
在这里插入图片描述
题解:

本题虽然在前缀树的tag中,但是感觉和前缀树也没啥关系啊!如果各位有用前缀树做出来的,告诉我下,谢谢。


算法:遍历查询项的每个单词,然后与模式串中的字符匹配,分为三种情况:

  • 1)查询项的大写字符与模式串的大写字符匹配,两个字符串继续向后匹配
  • 2)查询项的大写字符与模式串的大写字符部匹配,表示查询项与模式串匹配不成功(因为查询串不能除了模式串的大写字符)
  • 3)其他情况,模式串移动到下一个字符,继续下一次循环

代码如下:

class Solution {
public:
    //解法:暴力法,遍历出每个query,然后于pattern比较就好了
    vector<bool> camelMatch(vector<string>& queries, string pattern) {
        vector<bool> result;
        int psize=pattern.size();
        for(const auto& query:queries){
            int i=0,j=0,qsize=query.size();
            while(i<qsize){
                if(j<psize&&query[i]==pattern[j]){++i;++j;}
                else if(query[i]>='A'&&query[i]<='Z')break;//查询串有多余的大写字符,直接退出
                else ++i;
            }
            //模式串和查询串匹配成功
            if(i>=qsize&&j>=psize)result.push_back(true);
            else result.push_back(false);
        }
        return result;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值