首页 > 其他分享 >1023. 驼峰式匹配

1023. 驼峰式匹配

时间:2023-04-15 17:00:13浏览次数:64  
标签:匹配 1023 驼峰 int pattern idx2 query idx1 指针

题目链接:1023. 驼峰式匹配

方法:双指针

解题思路

  • 对于当前询问 \(query\) 和 模式串 \(pattern\),初始化两个指针分别指向起始位置。
  • 若两个字符相同则都右移一位;否则判断当前 \(query\) 对应的字符是否为大写字母,若是则返回 \(false\),否则其指针右移一位;若有一个指针到达结尾,则结束循环。
  • 若循环结束时,\(pattern\) 的指针未遍历完,则说明没有不能得到 \(query\),返回 \(false\);否则若 \(query\) 指针未遍历完,则继续判断剩余字符是否为大写字母,若是则返回false;
  • 最后返回 \(true\)。

代码

class Solution {
public:
    bool check(string query, string pattern) {
        int n = query.length(), m = pattern.length();
        int idx1 = 0, idx2 = 0;
        while (idx1 < n && idx2 < m) {
            if (query[idx1] == pattern[idx2]) {
                idx1 ++ ; idx2 ++ ;
            } else {
                if (query[idx1] >= 'A' && query[idx1] <= 'Z') return false;
                else idx1 ++ ;
            }
        }
        if (idx2 < m) return false;
        while (idx1 < n) {
            if (query[idx1] >= 'A' && query[idx1] <= 'Z') return false;
            idx1 ++ ;
        }
        return true;
    }
    vector<bool> camelMatch(vector<string>& queries, string pattern) {
        int n = queries.size();
        vector<bool> ans(n);
        for (int i = 0; i < n; i ++ ) {
            ans[i] = check(queries[i], pattern);
        }
        return ans;
    }
};

复杂度分析

时间复杂度:\(O(nm)\),\(n\) 为询问数组的长度,\(m\) 为当前询问的长度;
空间复杂度:\(O(1)\)。

标签:匹配,1023,驼峰,int,pattern,idx2,query,idx1,指针
From: https://www.cnblogs.com/lxycoding/p/17321428.html

相关文章

  • python3正则-多匹配函数
    1、介绍这里介绍findall和finditer两个函数。2、findall函数findall(pattern,string,flags=0)pattern,正则表达式string,待处理字符串flags,标志,处理模式返回类型为list,如果不存在匹配,返回空列表[]。如果存在匹配,则返回全部匹配项,这里需要注意()的影响2.1无()importr......
  • python3正则-单匹配函数
    1、介绍re模块是python3用于处理正则的模块。这里介绍三个函数,re.match、re.fullmatch和re.search的使用。其都是如果匹配,则返回re.Match类对象,为初次匹配项。不匹配则返回None。且()不影响匹配结果,只是匹配过程中对需要匹配的描述。2、match函数match(pattern,string,fla......
  • rust模式匹配(可驳模式匹配与不可驳模式匹配)
    rust的一个特性就是模式匹配(OOP编程语言好像都有?),模式匹配常常和变量绑定一起考虑常见的模式匹配有:match、iflet、whilelet、let、for、函数参数等等(for和let我个人认为说是模式匹配,其实有点牵强了,除非这样let(x,y)=(1,2)可驳与不可驳可驳模式匹配要求一定要穷尽所有......
  • re.findall()用法详解-返回string中所有与pattern相匹配的全部字串
    re.findall():函数返回包含所有匹配项的列表。返回string中所有与pattern相匹配的全部字串,返回形式为数组。  示例代码1:【打印所有的匹配项】   importre       s="Longlivethepeople'sRepublicofChina"   ret=re.findall('h',s)       ......
  • 字符串匹配算法KMP
    KMP算法是字符串的匹配算法,比如我给一个名为《文本》的字符串,和一个名为《样板》的字符串,询问《样板》在《文本》中出现过的次数,这就需要字符串匹配算法。对于匹配,形象一点可以看例子:《文本1》="abcdefghigklmn"《样板1》="abc"=============================《文本2》="abcde......
  • 正则表达式的匹配字串引用($1、$2...)
    上季度公司一个需求是要求优化项目接口的返回结果处理方式,原先各Controller直接调用SuperController的结果处理方法,类似这样:returncallBackSuccess(data);returncallBackSuccess(msg,data);returncallBackFilure(AppCode.XXX);//AppCode是一个返回状态码和状态码对应信息......
  • 如何用递归实现简单的单括号匹配
    1.什么是括号匹配?直觉上是这个形式的:((3+5)*8+9)+(5/3-3)对于计算机而言其主要特征是:(1)在从左向右读取括号的过程中,左括号数量总是大于等于右括号(2)同样,从右向左读取时,右括号数量总是大于等于左括号(3)读取结束时,左右括号相等。2.算法雏形(1)我们需要处理掉表达式左侧及右侧的非......
  • 【LBLD】滑动窗口算法延伸:RABIN KARP 字符匹配算法
    滑动窗口算法延伸:RABINKARP字符匹配算法187.重复的DNA序列普通方法:classSolution{public:vector<string>findRepeatedDnaSequences(strings){intn=s.size();unordered_set<string>seen;unordered_set<string>res;......
  • C # 9.0 的模式匹配
    voidM(objecto1,objecto2){vart=(o1,o2);if(tis(int,string)){}//testifo1isanintando2isastringswitch(o1){caseint:break;//testifo1isanintcaseSystem.String:break;//testifo1isastring}}关系模式 与常数值相......
  • C# Json序列化,设置驼峰命名(字段首字母小写)
    相关代码:varserializerSettings=newJsonSerializerSettings{//设置为驼峰命名ContractResolver=newCamelCasePropertyNamesContractResolver()};varresult=JsonConvert.Ser......