本题大意: 给你一个字符串s, 以一个模式串p,而模式串中规则匹配的只有 '.' 和 ‘*’,其中 ‘.’ 代表匹配任意一个字符,‘*’ 代表匹配的前一个字符有0个或多个,求字符串s和模式串p是否匹配?

题解:本题利用递归的思想使用模式串p去匹配字符串s;

1、当p为空的时候,s为空返回true,否则返回false

2、当p只有一个字符时,s 中的字符是否为1并且 (s[0] == p[0] or p[0] == '.');

3、当p[1] != '*'时, 判断s是否为空,是返回false, 否则返回(s[0] == p[0] or p[0] == '.') && isMatch(s.substr(1), p.substr(1))

substr(start) 表示截取从字符串start的位置到字符串的末尾

4、当p[1] == '*'时, 判断s是否为空 并且 (s[0] == p[0] or p[0] == '.'); 当s和p.substr(2)匹配时直接返回true(由于*可以匹配的前一个字符可以是0个,所以如果s和p.substr(2)匹配,前面的可以认为是0个,是符合模式匹配串的),如果不匹配则s = s.substr(1)

5、返回isMatch(s, p.substr(2))

#include <iostream>
using namespace std;bool isMatch(string s, string p)
{if (p.empty()) return s.empty();if (p.size() == 1){return (s.size() == 1 && (s[0] == p[0] || p[0] == '.'));}if (p[1] != '*'){if (s.empty()) return false;return (s[0] == p[0] || p[0] == '.') && isMatch(s.substr(1), p.substr(1));}while (!s.empty() && (s[0] == p[0] || p[0] == '.')){if (isMatch(s, p.substr(2))) return true;s = s.substr(1);}return isMatch(s, p.substr(2));
}int main()
{string s = "ab";string p = "a*";cout << isMatch(s, p) << endl;
}

leetcode 10、Regular Expression Matching相关推荐

  1. 乘风破浪:LeetCode真题_010_Regular Expression Matching

    乘风破浪:LeetCode真题_010_Regular Expression Matching 一.前言 关于正则表达式我们使用得非常多,但是如果让我们自己写一个,却是有非常大的困难的,我们可能想到状 ...

  2. 【重点 递归 动态规划 正则表达式匹配】LeetCode 10. Regular Expression Matching

    LeetCode 10. Regular Expression Matching 本博客参考:http://www.cnblogs.com/grandyang/p/4461713.html 详细解析见 ...

  3. leetcode 10 Regular Expression Matching

    题目连接 https://leetcode.com/problems/regular-expression-matching/ Regular Expression Matching Descript ...

  4. LeetCode 10. Regular Expression Matching / 44. Wildcard Matching

    10. Regular Expression Matching 经典DP题目,比较复杂,需要多复习. dp[i][j] 表示 s 下标0~i,p 下标0~j 是否能够匹配   dp[i-1][j-1] ...

  5. 【LeetCode】10. Regular Expression Matching

    题目: Implement regular expression matching with support for '.' and '*'. '.' Matches any single chara ...

  6. Leetcode Q10: Regular Expression Matching

    题目10: (该题目拿到手没什么特别好的思路,从网上看的别人的解法,然后写了下自己的理解,需要常回顾) Implement regular expression matching with suppo ...

  7. Regular Expression Matching

    正则匹配 Regular Expression Matching Implement regular expression matching with support for '.' and '*'. ...

  8. Q10 Regular Expression Matching

    Given an input string (s) and a pattern §, implement regular expression matching with support for '. ...

  9. 【算法】Regular Expression Matching 正则匹配

    [算法]Regular Expression Matching 正则匹配 题目 解题思路 代码实现 题目 Given an input string ( s ) and a pattern ( p ) ...

最新文章

  1. Java多线程发展简史
  2. 根据GPS经纬度查找指定范围内的对象
  3. IE8中HTTP连接数目的变化
  4. Flink 在唯品会的实践
  5. TestCenter中测试需求、测试用例、测试计划的评审方法
  6. mysql 中eq_表达式中的运算符EQ NE GT GE LT LE…..
  7. 福禄克FI-3000光纤监测显微仪使用MPO检查摄像头?
  8. Namomo Fish(Easy) Round 1
  9. Eclipse 构建Maven项目
  10. 转义字符简析及注意事项
  11. qt添加资源文件后编译失败,提示Qt:Error:No rule to make target ’ … /…/??.png’,needed by ‘debug/qrc_qrc.cpp’ stop
  12. 关于ASP.NET 中的主题
  13. SELinux 引起的 Docker 启动失败
  14. 100行代码搞定抖音短视频App,终于可以和美女合唱了。
  15. 基于JAVA+SpringBoot+Mybatis+MYSQL的小区物业管理系统
  16. python开发总结
  17. 深入理解Nacos源码注册中心之服务发现(订阅拉取)
  18. UTF-8 汉字编码与其16进制对照
  19. 被誉为现代电子计算机之父是,成教云: 人们习惯上尊称图灵为现代电子计算机之父。...
  20. 睁眼、耸肩、觉醒:人形机器人的吊诡与最终幻想

热门文章

  1. 给力!神策数据创新推出数字化运营闭环解决方案!
  2. 重磅!神策智能推荐获 2019 大数据“星河奖”
  3. 神策数据荣获“年度最具影响力大数据服务厂商”奖项
  4. 亚马逊智能语音助手Alexa大举招聘 放出400个职位
  5. Chrome DevTools:在 Profile 性能分析中显示原生 javascript 函数
  6. [Android学习笔记]LinearLayout布局,剩余空间的使用
  7. usaco Packing Rectangles
  8. 实验五 数据库完整性技术
  9. 水瓶座和什么座最配:天秤座,双子座,狮子座
  10. http://www.gov.cn/fuwu/bm/gyhxxhb/index.htm