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

LeetCode HOT100 - 正则表达式匹配

如果没有 * 这样的特殊字符,实际上双指针匹配就可以满足要求了

但是因为 * 会匹配零次或多次,所以每个位置可能会有多个匹配方式了,因此匹配的时候我们会需要去看前面的子串能否匹配,以及据此来决定这个位置的匹配形式

这就有些类似于 DP 的状态转移形式了

因为题目要求是能否被完全匹配,以及结合之前双指针的思路我们还是需要知道现在匹配到哪了

于是定义 dp[i][j],最终答案就是 dp[n][m]

不过最好不要用下标,因为可能有空串的情况

现在考虑转移

这里我们仍然从双指针的角度出发

也就是我们现在在 i-1, j-1,要看(转移到) ij

因此如果 p[j-1] 是一般字符(包括 .),那么取决于 p[j - 1] 是否等于 s[i - 1]

如果是 *
那么分情况讨论,如果是匹配 0 次,那么相当于把这个字符删除了,那么我们看 [j - 2] 的匹配情况

若至少匹配一次,那么必须能和现在的 s[i - 1] 相等

且这次匹配后,j 是不会继续移动的

class Solution {
public:bool isMatch(string s, string p) {int n = s.size();int m = p.size();vector<vector<int>> dp(n + 1, vector<int>(m + 1));dp[0][0] = 1;for (int j = 2; j <= m; j++) {if (p[j - 1] == '*') {dp[0][j] = dp[0][j - 2];}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (p[j - 1] != '*') {if (p[j - 1] == '.' || p[j - 1] == s[i - 1]) {dp[i][j] = dp[i - 1][j - 1];}} else {dp[i][j] = dp[i][j - 2];if (p[j - 2] == '.' || p[j - 2] == s[i - 1]) {dp[i][j] |= dp[i - 1][j];}}}}return dp[n][m];}
};
http://www.jsqmd.com/news/708268/

相关文章:

  • 前端大文件上传的另一种提速思路
  • 2026最新CMO课程团队推荐!国内优质权威榜单发布,北京等地专业课程实力出众 - 十大品牌榜
  • 网盘直链下载助手终极指南:一键解锁八大网盘高速下载
  • 机器学习下采样技术:解决不平衡分类问题的实用指南
  • 显卡驱动彻底清理解决方案:DDU专业工具使用全解析
  • 2026年全国风机选购指南:消防排烟、厨房油烟、工业通风一站式解决方案 - 优质企业观察收录
  • 从玩具车到真车:用Python手把手推导阿克曼转向模型(附代码)
  • 三联错
  • Cyrus:自托管AI编码代理部署与实战,打造自动化开发流水线
  • DeOldify高清人像上色特写:肤质与毛发细节惊艳呈现
  • 网盘直链下载助手:8大主流网盘文件高速下载解决方案
  • 别再只会用SR501做感应灯了!手把手教你用Linux驱动玩转人体红外模块(附完整代码)
  • Higress安装避坑指南:从Helm仓库添加到Grafana存储配置,新手常踩的5个坑
  • 手里的瑞祥商联卡用不上?这样处理省心又不浪费 - 团团收购物卡回收
  • 用Python+Playwright打造你的BOSS直聘求职外挂:从接口分析到自动回复的保姆级教程
  • 为什么你的Windows桌面需要一个免费的智能分区管家?
  • Avue-Crud表格错位、布局混乱?一份完整的排查与修复指南(附keep-alive解决方案)
  • real-anime-z惊艳生成:写实皮肤质感+动画线条的跨风格融合效果
  • 从BAM文件到发表级图片:rmats2sashimiplot实战避坑指南(含sort、建索引与坐标参数详解)
  • 从透明物体到日常场景:一份给机器人开发者的RGBD深度补全算法选型与避坑实战指南
  • 用按键精灵2014.06给本地Node.js服务发POST请求,5分钟搞定字符串相似度计算
  • 抖音下载工具架构深度解析:从单视频到批量下载的技术实现
  • 游戏人工智能寻路算法与群体行为
  • 单片机c语言基础知识,c语言必背100代码有哪些?
  • 如何用WeChatMsg掌握你的微信数据主权:从聊天记录到数字记忆的完整指南
  • 定期更新文娱活动,丰富晚年精神生活—智慧养老系统活动管理模块
  • 从DIY爱好者视角看ZEMAX:如何用软件‘打磨’你的第一块200mm F/5牛顿望远镜主镜
  • PyTorch模型编译与梯度累积加速Transformer训练
  • NI硬件平台在结构健康监测中的技术选型与应用
  • 保姆级图解:用N阱工艺DIY一个CMOS反相器(含工艺步骤对照表与3D动画资源)