Regular Expression Matching 正则表达式匹配和递归
2015-06-16 18:17
399 查看
Regular Expression Matching
Implement regular expression matching with support for '.'and
'*'.
'.' Matches any single character. '*' Matches zero or more of the preceding element. The matching should cover the entire input string (not partial). The function prototype should be: bool isMatch(const char *s, const char *p) Some examples: isMatch("aa","a") → false isMatch("aa","aa") → true isMatch("aaa","aa") → false isMatch("aa", "a*") → true isMatch("aa", ".*") → true isMatch("ab", ".*") → true isMatch("aab", "c*a*b") → true
[code]
class Solution { public: //* 匹配0或多个 前面的字符 // "a", "ab*" bool isMatch(string s, string p) { int pLen=p.length(); int sLen=s.length(); if(pLen==0) return sLen==0; if(pLen==1) if( (s[0]==p[0] || p[0]=='.') && sLen==1) return true; else return false; if(p[1]!='*'){ if(s.length()>0 && (s[0]==p[0] || p[0]=='.')) return isMatch(s.substr(1),p.substr(1)); else return false; }else{ while(s.length()>0 && (p[0]==s[0] || p[0]=='.')) { if(isMatch(s,p.substr(2)))//*表示0个字符 return true; s=s.substr(1); } return isMatch(s,p.substr(2)); } } };
相关文章推荐
- android performClick使用
- js输出数组中不同项的个数
- hihocode 第五十周 欧拉路·二
- 一道题目理解js中变量在作用域链与原型链中的查找顺序
- php友好格式化时间
- HDFS中的NameNode和DataNode
- Java堆,方法区,Java栈和本地方法栈浅析
- POJ 2367 拓扑排序
- 第十四周项目1-3:统计字符个数
- 机器学习算法中如何选取超参数:学习速率、正则项系数、minibatch size
- 机器学习算法中如何选取超参数:学习速率、正则项系数、minibatch size
- Android 实现监听开机启动开启后台服务,并实现自动重启。
- nginx linux 配置文档
- 正则表达式
- 使用sublimeText开发python,使用lxml库部分要点
- 人不能懒!
- 人脸检测相关介绍
- Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
- 如何培养自信心
- 移动端前端笔记大全