leetcode 10、Regular Expression Matching
本题大意: 给你一个字符串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相关推荐
- 乘风破浪:LeetCode真题_010_Regular Expression Matching
乘风破浪:LeetCode真题_010_Regular Expression Matching 一.前言 关于正则表达式我们使用得非常多,但是如果让我们自己写一个,却是有非常大的困难的,我们可能想到状 ...
- 【重点 递归 动态规划 正则表达式匹配】LeetCode 10. Regular Expression Matching
LeetCode 10. Regular Expression Matching 本博客参考:http://www.cnblogs.com/grandyang/p/4461713.html 详细解析见 ...
- leetcode 10 Regular Expression Matching
题目连接 https://leetcode.com/problems/regular-expression-matching/ Regular Expression Matching Descript ...
- 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] ...
- 【LeetCode】10. Regular Expression Matching
题目: Implement regular expression matching with support for '.' and '*'. '.' Matches any single chara ...
- Leetcode Q10: Regular Expression Matching
题目10: (该题目拿到手没什么特别好的思路,从网上看的别人的解法,然后写了下自己的理解,需要常回顾) Implement regular expression matching with suppo ...
- Regular Expression Matching
正则匹配 Regular Expression Matching Implement regular expression matching with support for '.' and '*'. ...
- Q10 Regular Expression Matching
Given an input string (s) and a pattern §, implement regular expression matching with support for '. ...
- 【算法】Regular Expression Matching 正则匹配
[算法]Regular Expression Matching 正则匹配 题目 解题思路 代码实现 题目 Given an input string ( s ) and a pattern ( p ) ...
最新文章
- Java多线程发展简史
- 根据GPS经纬度查找指定范围内的对象
- IE8中HTTP连接数目的变化
- Flink 在唯品会的实践
- TestCenter中测试需求、测试用例、测试计划的评审方法
- mysql 中eq_表达式中的运算符EQ NE GT GE LT LE…..
- 福禄克FI-3000光纤监测显微仪使用MPO检查摄像头?
- Namomo Fish(Easy) Round 1
- Eclipse 构建Maven项目
- 转义字符简析及注意事项
- qt添加资源文件后编译失败,提示Qt:Error:No rule to make target ’ … /…/??.png’,needed by ‘debug/qrc_qrc.cpp’ stop
- 关于ASP.NET 中的主题
- SELinux 引起的 Docker 启动失败
- 100行代码搞定抖音短视频App,终于可以和美女合唱了。
- 基于JAVA+SpringBoot+Mybatis+MYSQL的小区物业管理系统
- python开发总结
- 深入理解Nacos源码注册中心之服务发现(订阅拉取)
- UTF-8 汉字编码与其16进制对照
- 被誉为现代电子计算机之父是,成教云: 人们习惯上尊称图灵为现代电子计算机之父。...
- 睁眼、耸肩、觉醒:人形机器人的吊诡与最终幻想
热门文章
- 给力!神策数据创新推出数字化运营闭环解决方案!
- 重磅!神策智能推荐获 2019 大数据“星河奖”
- 神策数据荣获“年度最具影响力大数据服务厂商”奖项
- 亚马逊智能语音助手Alexa大举招聘 放出400个职位
- Chrome DevTools:在 Profile 性能分析中显示原生 javascript 函数
- [Android学习笔记]LinearLayout布局,剩余空间的使用
- usaco Packing Rectangles
- 实验五 数据库完整性技术
- 水瓶座和什么座最配:天秤座,双子座,狮子座
- http://www.gov.cn/fuwu/bm/gyhxxhb/index.htm