剑指Offer---正则表达式匹配
来源:互联网 发布:js获取当前城市名称 编辑:程序博客网 时间:2024/05/01 12:41
【题目】
请实现一个函数用来匹配包括’.’和’*’的正则表达式。模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配
【代码实现】
class Solution {public: bool match(char* str, char* pattern) { if(str == nullptr || pattern == nullptr){ return false; } return match1(str, pattern); } bool match1(char* str, char* pattern){ if(*str == '\0' && *pattern == '\0'){ return true; } //str为'\0',pattern不为'\0',不一定为false,比如:“a”,“ab*” if(*pattern == '\0' && *str != '\0'){ return false; } if(*(pattern+1) != '*'){ if(*pattern == *str || (*pattern == '.' && *str != '\0')){ return match1(str + 1, pattern + 1); } else{ return false; } } else{ if(*pattern == *str || (*pattern =='.' && *str != '\0')){ //case1:不再需要使用'*'重复前一个元素,比如:“ab”,“a*b” //case2:需要使用'*'重复前一个元素,比如:“aab”,“a*b” //case3:虽然当前元素可以匹配,但是并不需要该元素,比如:“a”,“a*a” return match1(str + 1, pattern + 2) || match1(str + 1, pattern) || match1(str, pattern + 2); } else{ //如果当前元素不能匹配,只能按出现0次考虑 return match1(str, pattern + 2); } } }};
阅读全文
1 0
- 《剑指offer》正则表达式匹配
- 剑指offer--正则表达式匹配
- 剑指offer:正则表达式匹配
- [剑指offer]正则表达式匹配
- 剑指offer-正则表达式匹配
- 剑指offer|正则表达式匹配
- 《剑指offer》-正则表达式匹配
- 剑指offer-正则表达式匹配
- 【剑指offer】正则表达式匹配
- 【剑指offer】正则表达式匹配
- 剑指offer-正则表达式匹配
- 剑指offer:正则表达式匹配
- 剑指Offer---正则表达式匹配
- 剑指offer 53-正则表达式匹配
- 剑指offer—正则表达式匹配
- 正则表达式匹配(递归+剑指offer)
- 《剑指offer》——正则表达式匹配
- 正则表达式匹配-剑指offer(JAVA版)
- 40、50、60--说说我那些超龄的程序员同事们
- 拿好不谢!程序员圣诞节的脱单秘籍
- redis事务处理
- 走近富兰克林--《富兰克林自传》
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 G-取数游戏(区间dp)
- 剑指Offer---正则表达式匹配
- C语言中的typedef struct用法
- 最高 3.9 GHz CPU 时脉、Vega M 图形核心 Intel Core i7-8709G 处理器资料曝光
- Oracle rownum的理解以及rownum分组出现重复数据的解决方法
- 10.9、spring boot的web应用——拦截器的应用
- 经典算法之非递归算法实现二叉树前、中、后序遍历
- Hdoj 1715 大菲波数
- UDP
- calico deep dive