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

LeetCode 刷题【44. 通配符匹配】

44. 通配符匹配

自己做(歇菜)

看题解

解:动态规划

官方代码

情况1:匹配一个任意字符,这时候只需要关注前面的匹配情况,前面如果匹配上了,延伸一个能匹配的字符还是能匹配,反之不匹配,即dp[i][j−1]

情况2:匹配任意长度的字符(0~xxx),这时候看上一轮的匹配的情况,上一轮即dp[i−1][j],上一轮的*无论是什么,我们延伸后依然保持一致,如果上一轮匹配,那么这一轮依旧匹配,否则不匹配

  • 首先处理p匹配串开头的*,可能是一个也可能有多个,这里默认*代表空字符,即表示,s主串的前0个元素和p匹配串的前i个元素匹配
  • 匹配的过程中,如果为*,则算两种情况:
  • 如果元素相等或者匹配字符为?,那么匹配的结果就看之前匹配能否匹配上,前面匹配上了,那么扩展一位能匹配的字符,依然能匹配,反之不匹配

class Solution {
public:bool isMatch(string s, string p) {int m = s.size();int n = p.size();vector<vector<int>> dp(m + 1, vector<int>(n + 1));dp[0][0] = true;for (int i = 1; i <= n; ++i) {if (p[i - 1] == '*') {dp[0][i] = true;}else {break;}}for (int i = 1; i <= m; ++i) {for (int j = 1; j <= n; ++j) {if (p[j - 1] == '*') {dp[i][j] = dp[i][j - 1] | dp[i - 1][j];}else if (p[j - 1] == '?' || s[i - 1] == p[j - 1]) {dp[i][j] = dp[i - 1][j - 1];}}}return dp[m][n];}
};
http://www.xdnf.cn/news/18061.html

相关文章:

  • 【杂谈】-以质代量:谷歌主动学习范式重构AI训练逻辑
  • 朝花夕拾(四) --------python中的os库全指南
  • 【k8s】Kubernetes核心概念与架构详解
  • 向量数据库
  • Qt | 四种方式实现多线程导出数据功能
  • Python爬虫实战:研究optimesh库,构建Github网格数据采集系统
  • 好看的个人导航系统多模板带后台
  • OpenAI 发布了 GPT-5,有哪些新特性值得关注?国内怎么使用GPT5?
  • 乐观锁和悲观锁
  • Opencv 形态学与梯度运算
  • C++ 标准模板库 (^^ゞ 致敬 STL 创始人 Alexander Stepanov
  • React 第七十节 Router中matchRoutes的使用详解及注意事项
  • 【完整源码+数据集+部署教程】胃部病变检测系统源码和数据集:改进yolo11-LSKNet
  • wgs-84坐标到直角坐标系
  • Git 命令指南:从 0 到熟练、从常用到“几乎全集”(含常见报错与解决)建议收藏!!!
  • 大上墨水屏显示器Paperlike253 Mac 特别版 使用体会
  • Git登录配置的详细方法
  • uniapp中uni.showToast和 uni.showLoading同时使用时出现提示中断冲突问题。
  • java设计模式之迪米特法则使用场景分析
  • 佳文赏读 || (CVPR 2025新突破) Robobrain:机器人操作从抽象到具体的统一大脑模型(A Unified Brain Model)
  • 魔搭api功能优化
  • 栈与队列:数据结构中的双生子
  • 【P14 3-6 】OpenCV Python——视频加载、摄像头调用、视频基本信息获取(宽、高、帧率、总帧数),视频保存在指定位置
  • 在职老D渗透日记day18:sqli-labs靶场通关(第26关)get报错注入 过滤or和and基础上又过滤了空格和注释符 ‘闭合 手动注入
  • qt vs2019编译QXlsx
  • Linux软件编程(六)(exec 函数族、system 实现、进程回收与线程通信)
  • C++ 内存管理(内存分布 , 管理方式 , new和delete实现原理)
  • pidgen!DecodeProdKey函数分析之iDecodedBytesMax
  • 服务器硬件电路设计之I2C问答(七):解析 I2C 通信 “卡壳” 难题:从设备无响应与跨电压兼容之道
  • Spring AI Starter和文档解读