正则表达式匹配(递归+剑指offer)
来源:互联网 发布:医疗器械软件指导原则 编辑:程序博客网 时间:2024/05/01 11:49
正则表达式匹配
- 参与人数:660时间限制:1秒空间限制:32768K
- 通过比例:14.97%
- 最佳记录:0 ms|8552K(来自 高鹏)
题目描述
请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配
链接:http://www.nowcoder.com/practice/45327ae22b7b413ea21df13ee7d6429c?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
题意:点可以表示任意字符,星*表示前一个字符可以出现0--n次,那么用递归来解,条件是str串和pattern串到达结尾,或者str串结尾了,pattern串没有结尾,都退出。
而递归的条件是:遇到*,则三个出口,(str+1,pattern+2),(str+1,pattern+2),(str,pattern+2),(str+1,pattern);
遇到'.' (str+1,pattern+1);
#include<cstdio>using namespace std;class Solution {public: bool match(char* str, char* pattern) {// puts(str);// puts(pattern); if(str==NULL && pattern==NULL) return true; if(str==NULL || pattern==NULL) return false; return matchCore(str,pattern); } bool matchCore(char *str,char *pattern) { if(*str=='\0' && *pattern=='\0') {return true;} if(*str!='\0' && *pattern=='\0') return false; if(*(pattern+1)=='*') { if(*str==*pattern || (*pattern=='.'&&*str!='\0')) { //move on the next state return matchCore(str+1,pattern+2) //stay on the current state || matchCore(str+1,pattern) //ignore a '*' || matchCore(str,pattern+2); } else return matchCore(str,pattern+2); } if(*str==*pattern||(*pattern=='.'&&*str!='\0')) { return matchCore(str+1,pattern+1); } return false; }};int main(){ char ch1[]=""; char ga1[]=""; char *ch=ch1; char *ga=ga1; Solution so; if(so.match(ch,ga))printf("true\n"); else printf("false\n"); return 0;}
0 0
- 正则表达式匹配(递归+剑指offer)
- 剑指offer(55):正则表达式匹配
- 剑指offer(49)-正则表达式匹配
- (剑指offer)正则表达式匹配
- 《剑指offer》正则表达式匹配
- 剑指offer--正则表达式匹配
- 剑指offer:正则表达式匹配
- [剑指offer]正则表达式匹配
- 剑指offer-正则表达式匹配
- 剑指offer|正则表达式匹配
- 《剑指offer》-正则表达式匹配
- 剑指offer-正则表达式匹配
- 【剑指offer】正则表达式匹配
- 【剑指offer】正则表达式匹配
- 剑指offer-正则表达式匹配
- 剑指offer:正则表达式匹配
- 剑指Offer---正则表达式匹配
- 【剑指offer-解题系列(53)】正则表达式匹配
- android四大组件之-Broadcast的使用、Content Provider的使用
- 分布式文件系统:原理、问题与方法
- 贝叶斯学派与频率学派有何不同?
- 黑马程序员——OC基础知识
- 代码之髓:编程语言核心概念——互动出版网
- 正则表达式匹配(递归+剑指offer)
- JAVA中HashMap和HashTable的区别
- 我之见解字符串
- 关于HTTP请求体格式
- 查找网站后台N种方法总结
- 看完这篇文章,你就了解了Android Handler的一切
- 实战mybatis
- Navicat远程无法连接mysql问题解决(附MAC上NavicatPremium11.1.8破解中文版下载链接)
- 链路聚合、端口镜像配置