正则表达式匹配
2015-09-09 19:24
281 查看
请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配
leetcode原题
先判断是否p+1==*,然后进入循环,循环结束return match(str,p+2),不然会出现s=\0,p=.*,进入不了循环的状况。
else if 时要加上str!=\0,不然会出现s=\0,p=.的状况,都+1后s=null。
leetcode原题
Regular Expression Matching
思路:只有当p==\0时,判断s==\0;否则会出现:s=\0,p=c*。先判断是否p+1==*,然后进入循环,循环结束return match(str,p+2),不然会出现s=\0,p=.*,进入不了循环的状况。
else if 时要加上str!=\0,不然会出现s=\0,p=.的状况,都+1后s=null。
class Solution { public: bool match(char* str, char* pattern) { if(*pattern=='\0') return *str=='\0'; if(*(pattern+1)=='*'){ while(*str!='\0'){ if(match(str,pattern+2)) return true; if(*str==*pattern||*pattern=='.') str++; else return false; } return match(str,pattern+2); } else if(*pattern==*str||(*pattern=='.'&&*str!='\0')){ return match(str+1,pattern+1); } return false; } };
相关文章推荐
- struts2处理.do后缀的请求
- 浅谈java单例模式——优点以及为什么使用到synchronized
- HDU 4762 Cut the Cake (高精度 + 公式)
- 我很愚蠢
- Linux命令之write调用的原子性
- cocos2dx中的坐标系和锚点
- hdu1166敌兵布阵(线段树模板)
- 简单举例说明C++中break和continue语句的用法
- 指数循环节
- 监听套接字 连接套接字
- 图片按钮ImageButton
- 饿了么面试
- 每一个程序员需要了解的10个Linux命令
- 基于centos7最小化安装的openstack环境搭建(1)
- 文章索引-跨平台开发
- 三层架构
- Objective-C 【protocol 的引用问题】
- UIAlertController
- POJ 3264 Balanced Lineup(RMQ)
- ios-音乐播放器(2)工具类的封装