当前位置: 首页 > java >正文

LeetCode 1023.驼峰式匹配

给你一个字符串数组 queries,和一个表示模式的字符串 pattern,请你返回一个布尔数组 answer 。只有在待查项 queries[i] 与模式串 pattern 匹配时, answer[i] 才为 true,否则为 false。

如果可以将 小写字母 插入模式串 pattern 得到待查询项 queries[i],那么待查询项与给定模式串匹配。您可以在模式串中的任何位置插入字符,也可以选择不插入任何字符。

示例 1:

输入: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”.
示例 2:

输入:queries = [“FooBar”,“FooBarTest”,“FootBall”,“FrameBuffer”,“ForceFeedBack”], pattern = “FoBa”
输出:[true,false,true,false,false]
解释:
“FooBar” 可以这样生成:“Fo” + “o” + “Ba” + “r”.
“FootBall” 可以这样生成:“Fo” + “ot” + “Ba” + “ll”.
示例 3:

输入:queries = [“FooBar”,“FooBarTest”,“FootBall”,“FrameBuffer”,“ForceFeedBack”], pattern = “FoBaT”
输出:[false,true,false,false,false]
解释:
“FooBarTest” 可以这样生成:“Fo” + “o” + “Ba” + “r” + “T” + “est”.

提示:

1 <= pattern.length, queries.length <= 100
1 <= queries[i].length <= 100
queries[i] 和 pattern 由英文字母组成

对于每一个查询query,与pattern进行双序列双指针,跳过query中有,pattern中没有的小写字母:

class Solution {
public:vector<bool> camelMatch(vector<string>& queries, string pattern) {vector<bool> ans(queries.size());for (int i = 0; i < queries.size(); ++i) {int queryIdx = 0;int patternIdx = 0;string &query = queries[i];bool flag = true;while (queryIdx < query.size() && patternIdx < pattern.size()) {// 如果查询和pattern里的字符相同,则同时右移指针if (query[queryIdx] == pattern[patternIdx]) {++queryIdx;++patternIdx;// 否则,如果查询里的字符是小写,则可以填充到pattern中,右移查询指针} else if (islower(query[queryIdx])) {++queryIdx;// 如果查询和pattern里的字符不同,且当前查询的字符不是能填充到pattern中的小写// 则一定不能匹配} else {flag = false;break;}}// 可能查询还未完成,此时需要检查查询中是否还有大写// 如果有大写,由于大写不能填充到pattern中,则一定不匹配while (queryIdx < query.size()) {if (isupper(query[queryIdx])) {flag = false;break;}++queryIdx;}// 如果query匹配完没有问题,且pattern也遍历完,就说明可以匹配到// pattern必须要遍历完,因为pattern不能多出来,多出来的部分不能变没ans[i] = flag && patternIdx == pattern.size();}return ans;}
};

如果queries的长度为n,其中每一个查询的平均长度为m,则此算法时间复杂度为O(nm),空间复杂度为O(1)。

http://www.xdnf.cn/news/19940.html

相关文章:

  • 3-7〔OSCP ◈ 研记〕❘ WEB应用攻击▸REST API概述
  • MTK Linux DRM分析(三十三)- MTK mtk_mipi_tx.c
  • 【10月优质EI会议合集|高录用】能源、机电一体化、材料、计算机、环境、电力、可再生资源、遥感、通讯、智慧交通...
  • 系统编程day03-进程
  • ​​​​​​​2025企业级GEO优化白皮书:技术生态与商业落地双轮驱动下的选择指南
  • 【2025ICCV】基于 ​CL-Splats​ 的3D高斯溅射模型
  • 苍穹外卖项目笔记day04--Redis入门
  • 如何区分 Context Engineering 与 Prompt Engineering
  • 【2025ICCV-持续学习方向】一种用于提示持续学习(Prompt-based Continual Learning, PCL)的新方法
  • C 内存对齐踩坑记录
  • 如何批量在PDF文档最后一页盖章?
  • 从源码入手,详解Linux进程
  • 并发编程指南 同步操作与强制排序
  • 理解Go与Python中的闭包(Closure)
  • 充电枪结构-常规特征设计
  • 代码随想录刷题Day48
  • PostgreSQL 索引使用分析2
  • 权威认证!华宇TAS应用中间件获得商用密码产品认证证书
  • 深入解析Go语言切片(Slice)精髓
  • 【论文阅读】LightThinker: Thinking Step-by-Step Compression (EMNLP 2025)
  • 金额字段该怎么设计?——给小白的超详细指南(含示例 SQL)
  • UniApp 混合开发:Plus API 从基础到7大核心场景实战的完整指南
  • 一文吃透 Protobuf “Editions” 模式从概念、语法到迁移与实战
  • 自动化仓库托盘搬运减少错误和损坏的方法有哪些?实操案例解读
  • 【踩坑记录】Unity 项目中 PlasticSCM 掩蔽列表引发的 文件缺失问题排查与解决
  • 分割回文串手绘图
  • 【OpenGL】LearnOpenGL学习笔记19 - 几何着色器 Geometry Shader
  • 解决 Android Studio 中 build 目录已被 Git 跟踪后的忽略问题
  • 【stm32】定时器中断与定时器外部时钟
  • el-table 行高亮,点击行改变背景