LeetCode每日一题 1023. 驼峰式匹配 --双指针

简介: 本题挺容易想到的,难得是如何处理特殊的情况.

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法......感兴趣就关注我吧!你定不会失望。


🌈个人主页:主页链接


🌈算法专栏:专栏链接


    我会一直往里填充内容哒!


🌈LeetCode专栏:专栏链接


目前在刷初级算法的LeetBook 。若每日一题当中有力所能及的题目,也会当天做完发出


🌈代码仓库:Gitee链接


🌈点击关注=收获更多优质内容🌈



题目:1023. 驼峰式匹配


ae10cf27dd384e15a2b6868191925382.png


题解:


本题挺容易想到的,难得是如何处理特殊的情况.


题目的大意是:


     模板串以每一个大写字母为分割,组成一个个子串.这些子串需要在待查询项中出现一次.且待查询串中不能再出现除此之外以大写字母开头的"子串".  

例如以下这种情况:


2a48984a226140cfbf602f13b27114db.jpg


拆分成:F+B


只要待查询项中含有F+B的组成格式且不含有其他大写字母即可作为true.其余需要填入false

再例如以下这种情况:


adeaa759699b415a9d7cad0fe781f493.jpg


  FoBa可以拆分为:Fo+Ba 只要一个个去对比待查询项中是否含有这些子串内容即可.


总结上面的情况:我们不难发现,这是用一个双指针的方法去对比每一个待查询项.


我们先模拟一下这个过程:


一个指针指向queries,一个指针指向pattern.

若有相同的则同时向前位移一格

出现不同的需要判断一下,是否为大写字母.若有queries中的大写字母与pattern中的字母不同.则直接填入false即可.

若对比完发现,指向pattern的指针仍然没有走到底,说明pattern在queries中并未全部出现,则同样填入false.

f0ad0600501e4927886471a2c140c709.jpg


梳理完了整个流程,接下来我们来看看代码实现.


首先创建一个长度为queries.size()的vector数组,其中填满true

之后依次遍历每一个queries的,将其与pattern进行比较.复现上面的过程


代码实现:


#include<vector>
#include<string>
#include<iostream>
using namespace std;
class Solution {
public:
    vector<bool> camelMatch(vector<string>& queries, string pattern) {
        vector<bool>ans(queries.size(),true);
        int npat=pattern.size();
        for(int i=0;i<queries.size();i++)
        {
            int p=0;
            for(auto c:queries[i])
            {
                if(pattern[p]==c)
                {
                    p++;
                }
                else if(isupper(c))
                {
                    ans[i]=false;
                }
            }
            if(p<pattern.size())
                ans[i]=false;
        }
        return ans;
    }
};


完结撒花:


🌈本篇博客的内容【LeetCode每日一题 1023. 驼峰式匹配 --双指针】已经结束。


🌈若对你有些许帮助,可以点赞、关注、评论支持下博主,你的支持将是我前进路上最大的动力。


🌈若以上内容有任何问题,欢迎在评论区指出。若对以上内容有任何不解,都可私信评论询问。


🌈诸君,山顶见!

目录
相关文章
|
3月前
|
Python
【Leetcode刷题Python】138. 复制带随机指针的链表
LeetCode上题目“138. 复制带随机指针的链表”的Python解决方案,包括两种方法:一种是在每个节点后复制一个新节点然后再分离出来形成新链表;另一种是构建一个字典来跟踪原始节点与其副本之间的映射关系,从而处理新链表的构建。
22 1
|
5月前
|
索引
力扣每日一题 6/17 枚举+双指针
力扣每日一题 6/17 枚举+双指针
33 1
|
5月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
|
5月前
|
算法 数据挖掘 Java
深入解析力扣167题:两数之和 II(双指针法详解及模拟面试问答)
深入解析力扣167题:两数之和 II(双指针法详解及模拟面试问答)
|
5月前
|
存储 算法 数据挖掘
【模拟面试问答】力扣165题:比较版本号(逐个比较与双指针法详解及模拟面试问答)
【模拟面试问答】力扣165题:比较版本号(逐个比较与双指针法详解及模拟面试问答)
|
5月前
|
存储 算法 数据可视化
深入解析力扣160题:相交链表的解决方法(哈希表法与双指针法详细图解)
深入解析力扣160题:相交链表的解决方法(哈希表法与双指针法详细图解)
|
6月前
|
算法
[优选算法]——双指针——Leetcode——1089. 复写零
[优选算法]——双指针——Leetcode——1089. 复写零
|
5月前
|
算法
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
|
5月前
|
算法 容器
【经典LeetCode算法题目专栏分类】【第1期】左右双指针系列:盛最多水的容器、接雨水、回文子串、三数之和
【经典LeetCode算法题目专栏分类】【第1期】左右双指针系列:盛最多水的容器、接雨水、回文子串、三数之和