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

正则表达式匹配

链接

10. 正则表达式匹配 - 力扣(LeetCode)

思路

1. 我们需要贪心的去匹配,尽可能多的去满足匹配方式 需要用到 dp ,横轴表示 s 母串,纵轴表示 p 子串,所以 dp [i][j] 的情况就是代表 当前 s[i] 和 p[j] 的一个匹配情况

2. 于是匹配规则就有俩种情况 —— 出现 * 号了 我们对于当前字符串到底需不需要进行取舍,我们尽可能匹配最多,因此 当出现 p 字符串 前一个匹配规则是 * 号的时候,我们先预设 当前的 * 好已经匹配过前面一个字符了,然后去看 p 串前一个 为 * 号时 是否匹配 s[i] 或者说 s[i-1],如果匹配则取true

3. 没出现 * 号常规匹配

代码

/** * @param {string} s * @param {string} p * @return {boolean} */ var isMatch = function (s, p) { let dp = Array.from({ length: s.length + 5 }, () => new Array(p.length + 5).fill(false)); function match(i, j) { if (i === 0) return false if (p[j - 1] === '.') return true return s[i - 1] === p[j - 1] } dp[0][0] = true for (let i = 0; i <= s.length; i++) { for (let j = 1; j <= p.length; j++) { // 看看前一个字符是否符合是*号 if (p[j - 1] === '*') { // 默认先采取 不算当前字符的值,也就是算当前位置不匹配 dp[i][j] = dp[i][j - 2] // 如果匹配,优先贪婪匹配 if (match(i, j - 1)) { // 匹配的情况是 不算当前 母串字符的 情况 dp[i][j] = dp[i][j] || dp[i - 1][j] } } else { // 如果不是星号 if (match(i, j)) { dp[i][j] = dp[i - 1][j - 1] } } } } return dp[s.length][p.length] };
http://www.jsqmd.com/news/642919/

相关文章:

  • 华为OD机试 - 统计员工影响力分数(Python/JS/C/C++ 新系统 200分)
  • Photon Bridge 与 PHIX 合作开发 AI 数据中心激光光源
  • 终极性能提升秘籍:tiny-cuda-nn的JIT融合技术深度剖析
  • 终极指南:如何使用gumbo-parser构建高效HTML5解析工具
  • FastAdmin省市区联动选择:三种实现方案与实战解析
  • NestJs CRUD Swagger文档自动生成:终极API文档化指南
  • 告别PDF乱码!MinerU镜像一键转换多栏文档为Markdown
  • Java 云原生开发实践指南:构建现代化云应用
  • AI Agent入门指南:轻松掌握智能体核心技术,收藏学习必备!
  • 如何用wangEditor 5和mammoth.js实现Word文档一键转HTML(附完整代码)
  • TwitterOAuth完整指南:如何快速上手最流行的PHP Twitter API库
  • 别再凭感觉画线了!用SI9000搞定PCB阻抗计算(附嘉立创四层板实战参数)
  • 电工接线仿真软件 下载即用无需联网 支持本地自定义操作
  • TF-IDF算法避坑指南:为什么你的文本分类效果不如预期?
  • API调用式超大报告生成全链路优化方案
  • 终极gumbo-parser依赖冲突解决指南:版本选择策略与兼容性处理
  • Pfff插件开发指南:扩展你的代码分析能力
  • 7个实用技巧:用Cucumber Ruby构建高效测试框架的完整指南
  • Go-SCP正则表达式安全:如何避免ReDoS攻击的终极指南
  • 终极指南:如何高效维护和更新awesome-gcp-certifications资源库
  • 终极指南:如何使用Siren实现iOS应用自动版本检查与更新提示
  • Simulink建模避坑指南:ADRC跟踪微分器TD参数(r, h)怎么调?一个案例讲清楚
  • 【泛微】动态联动控制:主表字段变化触发明细行智能增删与内容同步
  • 小白/程序员必看:收藏这篇,轻松入门大模型智能体框架开发实战!
  • leetcode 1658. 将 x 减到 0 的最小操作数-Minimum Operations to Reduce X to Zero
  • 多模态对话系统2026生存清单:7项必测指标、5类隐性失效模式、3套即插即用评估工具(附大会官方Benchmark数据集)
  • 如何使用TinyColor实现JavaScript中的终极颜色操作:从基础到高级技巧
  • 7个终极Rivet性能优化技巧:提升AI代理执行效率的实用方法
  • 奇瑞加速欧洲布局,扩产计划开启新征程
  • craftzdog-homepage设计理念:从概念到实现的完整思考过程