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

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.dtcms.com/a/336333.html

相关文章:

  • 多墨智能-AI一键生成工作文档/流程图/思维导图
  • 《WINDOWS 环境下32位汇编语言程序设计》第3章 使用MASM
  • Redis面试精讲 Day 23:Redis与数据库数据一致性保障
  • 什么是回表?
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘scikit-image’问题
  • Hooks useState的使用
  • leetcode热题100——day33
  • 视频内容提取与AI总结:提升学习效率的实用方法
  • 【深度学习新浪潮】近三年图像处理领域无监督学习的研究进展一览
  • 科目二的四个电路
  • 《Vuejs设计与实现》第 14 章(内建组件和模块)
  • 概率dp|math
  • Android中切换语言的方法
  • 基于Netty的高并发WebSocket连接管理与性能优化实践指南
  • ReactNode 类型
  • 第12章《学以致用》—PowerShell 自学闭环与实战笔记
  • “让机器人更智慧 让具身体更智能”北京世界机器人大会行业洞察
  • Python 调试工具的高级用法
  • OJ目录饿
  • Python 基础语法(二)
  • Kubernetes存储迁移实战:从NFS到阿里云NAS完整指南
  • 【踩坑笔记】50系显卡适配的 PyTorch 安装
  • XF 306-2025 阻燃耐火电线电缆检测
  • JavaScript 性能优化实战:从评估到落地的全链路指南
  • Docker Compose 安装 Neo4j 的详细步骤
  • 福彩双色球第2025094期号码分析
  • Jenkins - CICD 注入环境变量避免明文密码暴露
  • 用MTEB对Embedding模型进行benchmark
  • Pell数列
  • 基本的设计原则