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

news/2024/12/22 9:19:15/

 

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

🌈个人主页:主页链接

🌈算法专栏:专栏链接

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

🌈LeetCode专栏:专栏链接 

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

🌈代码仓库:Gitee链接

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

目录

题目:1023. 驼峰式匹配

题解:

代码实现:

完结撒花:

 

题目:1023. 驼峰式匹配

题解:

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

题目的大意是:

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

例如以下这种情况:

 拆分成:F+B

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

再例如以下这种情况:

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

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

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

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

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

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

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

 

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

首先创建一个长度为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. 驼峰式匹配 --双指针】已经结束。

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

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

🌈诸君,山顶见!


http://www.ppmy.cn/news/47077.html

相关文章

Redis:常见的面试题和答案

1、Redis 是什么&#xff1f;它的主要用途是什么&#xff1f; 答案: Redis 是一个开源的内存数据结构存储系统&#xff0c;可以用作数据库、缓存和消息代理。它支持多种数据结构&#xff0c;例如字符串、列表、哈希表、集合和有序集合。Redis 的主要用途包括缓存、会话存储、排…

并发数据结构的目的和设计指南理解学习

并发数据结构的目的&#xff1a; 1、设计并发数据结构是为了让多线程并发访问&#xff0c;并且线程可对数据结构做相同或不同的操作。 2、多线程环境下&#xff0c; 无数据丢失和损毁&#xff0c;所有的数据需要维持原样&#xff0c;且无条件竞争的数据结构&#xff1b; 3、…

【Python基础入门学习】Python工具Pycharm的安装与使用

一、关于Python 1.1 下载Python 在下载与安装pycharm工具前&#xff0c;一定要先安装python 打开Python官网&#xff1a;python下载打开上述网站&#xff0c;选择 Downloads -> 系统 我是Windows系统&#xff0c;点击进入后&#xff0c;找到自己要安装的安装包以及想安装的…

LCMXO3LF-4300C-6BG324I FPGA lattice 深力科 FPGA的基本结构

LCMXO3LF-4300C-6BG324I FPGA lattice 深力科 FPGA的基本结构 lattice莱迪斯深力科电子 超低密度FPGA 是最新的立即启用、非挥发性、小型覆盖区 FPGA&#xff0c;采用先进的封装技术&#xff0c;能让每个元件达到最低成本。此系列采用最新的小型封装&#xff0c;不仅具有低功率…

【Linux】git命令(基础,新手)

文章目录 1.查看当前git版本信息2.安装git3.将远端仓库克隆到本地4.三板斧第一招&#xff1a;git add5.三板斧第二招&#xff1a;git commit6.三板斧第三招&#xff1a;git push7.对仓库文件进行更改8.查看使用提交日志9.查看本地与远端的同步状态10.从远端仓库拉取最新版本文件…

【智能电网】智能电网中针对DOS和FDIA的弹性分布式EMA(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

IP-GUARD能否实现打印指定文件时需经过管理员审批后才能打印?

支持。先设置禁止打印文档的策略,然后设置相关审批流程,再给到客户端相应的申请权限: 1、在控制台-高级-打印控制策略中,给需要进行打印管控的客户端设置以下策略: 动作:禁止 2、在控制台-申请管理-桌面申请管理-审批流程管理中,添加申请类型为打印的审批流程,指定审批人…

Linux 内核调优部分参数说明

表示尽量使用内存&#xff0c;减少使用磁盘 swap 交换分区&#xff0c;内存速度明显高于磁盘一个数量级。 vm.swappiness 0内存分配策略&#xff0c;Redis 持久化存储需设置值为1。 vm.overcommit_memory 10&#xff1a;表示内核将检查是否有足够的可用内存供应用进程使用&…