给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。

'.' 匹配任意单个字符
'*' 匹配零个或多个前面的那一个元素
所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。

说明:

s 可能为空,且只包含从 a-z 的小写字母。
p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。
示例 1:

输入:
s = "aa"
p = "a"
输出: false
解释: "a" 无法匹配 "aa" 整个字符串。
示例 2:

输入:
s = "aa"
p = "a*"
输出: true
解释: 因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。
示例 3:

输入:
s = "ab"
p = ".*"
输出: true
解释: ".*" 表示可匹配零个或多个('*')任意字符('.')。
示例 4:

输入:
s = "aab"
p = "c*a*b"
输出: true
解释: 因为 '*' 表示零个或多个,这里 'c' 为 0 个, 'a' 被重复一次。因此可以匹配字符串 "aab"。
示例 5:

输入:
s = "mississippi"
p = "mis*is*p*."
输出: false

思路:https://blog.csdn.net/qq_41231926/article/details/82010888

class Solution {
public:bool isMatch(string s, string p) {int ns = s.length() + 1;int np = p.length() + 1;bool** matched = new bool*[ns];for(int i=0;i<ns;++i){matched[i] = new bool[np];memset(matched[i],false,sizeof(bool)*np);}matched[0][0] = true;for (int i = 0; i < ns; i++) {for (int j = 1; j < np; j++) {if(i > 0 && (p[j - 1] == '.' || p[j - 1] == s[i - 1])) {matched[i][j] = matched[i - 1][j - 1];}if(p[j - 1] == '*') {if(i == 0 || (s[i - 1] != p[j - 2] && p[j - 2] != '.')) {matched[i][j] = matched[i][j - 2];}else {matched[i][j] = matched[i - 1][j] || matched[i][j - 1] || matched[i][j - 2];}}}}return matched[ns - 1][np - 1];}
};

正则表达式—leetcode10相关推荐

  1. LeetCode10. 正则表达式匹配

    LeetCode10. 正则表达式匹配 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个 ...

  2. LeetCode10.正则表达式匹配 JavaScript

    给定一个字符串 (s) 和一个字符模式 (p).实现支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符. '*' 匹配零个或多个前面的元素. 匹配应该覆盖整个字符串 (s) ,而不 ...

  3. leetcode10. 正则表达式匹配 一道没有解释的字符串dp困难题

    给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串  ...

  4. 面试题19/leetcode10:正则表达式匹配 C++

    题目:请实现一个函数用来匹配包含 .和* 的正则表达式.模式中的字符.表示任意一个字符,而 *表示它前面的字符可以出现任意次(含0次).在本题中,匹配是指字符串的所有字符匹配整个模式.例如,字符串&q ...

  5. 动态规划之正则表达式匹配字符串

    解题框架:[README1]动态规划之解题思路 文章目录 题目 解题思路 动态规划 CODE 题目 LeetCode10:正则表达式匹配 解题思路 正则表达式的匹配规则我在这里就不多说了,相信大家都很 ...

  6. 通过正则表达式校验手机号码,拿走即用!

    校验手机号码 2021/01/06更新,电信新增了191号段 1. 单纯校验长度 2.正则表达式校验数字 3.正则表达式校验是否是大陆号码 4.正则表达式校验是否是香港号码 //校验长度private ...

  7. Linux shell 学习笔记(15)— shell 正则表达式

    1. 定义 BRE 模式 1.1 纯文本 第一条原则就是:正则表达式模式都区分大小写.这意味着它们只会匹配大小写也相符的模式. $ echo "This is a test" | ...

  8. re2正则表达式匹配引擎的c接口版本cre2的中文使用手册

    前言 re2 官方地址: https://github.com/google/re2 cre2 官方地址: https://github.com/marcomaggi/cre2 1 基本类型定义 不透 ...

  9. 正则表达式(括号)、[中括号]、{大括号}的区别小结

    正则表达式(括号).[中括号].{大括号}的区别小结 </h1><div class="clear"></div><div class=& ...

最新文章

  1. 上帝视角:程序员为什么需要理解 CPU?
  2. 添加lombok插件
  3. 在线机房改造类项目建设难点的研究
  4. boost::intrusive::derivation_value_traits用法的测试程序
  5. linux 查看mysql运行时间_linux – strace显示从mysql socket读取很长时间 – mysql需要很长时间才能执行查询?...
  6. 操作系统基础:进程知识笔记(二)
  7. php-fpm7.0,php-fpm7.0 慢查询设置及说明
  8. 【转】使用Feature导入WebPart
  9. 语音识别asr是什么
  10. 通通玩blend美工(3)——可爱的云
  11. ThinkPad T480不拆电脑后盖更换键盘
  12. 机器人操作臂运动学入门一--D-H参数标定
  13. Excel制作+导出
  14. Could not set property ‘ sname‘ of ‘class com.cxy.mybatis.pojo.Student‘ with value ‘赵六‘这种报错原因及解决办法
  15. 【深度之眼PyTorch框架班第五期】作业打卡01:PyTorch简介及环境配置;PyTorch基础数据结构——张量
  16. element-ui表格组件分页后完整导出到excel的方法
  17. Grbl代码分析 cpu-map.h
  18. ffmpeg学习(11)音视频文件muxer(2)多输入混流
  19. 一阶差分序列garch建模_时间序列模型stata 基本命令汇总
  20. 如何用计算机抽奖,怎么设计一个可以电脑随机抽奖程序

热门文章

  1. VS2013+qt-vs-addin-1.2.4安装配置
  2. Nagios监控lvs服务
  3. Windows Phone中Wallet钱包的使用
  4. SQL中的left join与right join
  5. 创建数据库连接字符串的快截方法
  6. sql注入_1-8_宽字节注入
  7. HarmonyOS之数据管理·轻量级偏好数据库的应用
  8. 征战蓝桥 —— 2013年第四届 —— C/C++A组第8题——买不到的数目
  9. 【Java12】tomcatservlet(nginx,web.xml,生命周期,适配器优化),requestresponse(请求转发,登陆案例(1),重定向,文件下载)
  10. 【机器视觉】 close_measure算子