请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
来源:互联网 发布:微交易源码 编辑:程序博客网 时间:2024/06/03 17:51
剑指offer:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配
思路:情况非常复杂,利用递归思路,可以大大简化问题。其实,递归就是一步一步解决问题。
当拿到一个字符串str和模式串pattern,如果下一个为*,则有三种情况,匹配0个,匹配一个,匹配两个及两个以上。
如果下一个不为*,则直接匹配一个。
#include <iostream>#include <cstdio>#include <stack>#include <vector>#include <algorithm>#include <list>using namespace std;class Solution {public: bool match(char* str, char* pattern) { if(str == NULL || pattern == NULL) return false;//如果为空指针,则返回false return matchCore(str,pattern); } bool matchCore(char* str,char* pattern){ //有效性检验:str到尾,pattern到尾,匹配成功 if(*str == '\0' && *pattern == '\0') return true; //pattern先到尾,匹配失败 if(*str == '\0' && *pattern != '\0') return false; if(*str != '\0' && *pattern == '\0') return false; if(*(pattern + 1) == '*'){ if(*str == *pattern || *pattern == '.') return matchCore(str + 1,pattern) || matchCore(str, pattern + 2) || matchCore(str + 1, pattern + 2); else return matchCore(str, pattern + 2); } if(*str == *pattern || *pattern == '.') return matchCore(str + 1,pattern + 1); return false; }};int main(){char* s1 = ",";char* s2 = ".*";Solution s;bool bResult = s.match(s1,s2); return 0;}
阅读全文
0 0
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。
- 剑指Offer :请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配
- 正则表达式 匹配任意长度的字符
- java匹配任意字符的正则表达式
- 正则匹配任意字符,包括换行符的字符串
- PHP中关于正则表达式匹配任意字符(包括换行符)的写法
- 正则匹配任意字符(常用正则表达式的书写)
- 正则表达式匹配任意字符
- 正则表达式:匹配任意字符
- 正则表达式匹配任意字符
- 正则表达式匹配任意字符
- 正则表达式匹配任意字符
- 正则表达式匹配任意字符
- 正则表达式匹配任意字符
- 实现正则表达式匹配任意字符
- 关于正则表达式匹配任意字符(包括换行符)的写法
- python 数据处理的小技巧
- 链表面试题Java实现
- 20170816(二叉树的建树与遍历 计算几何 信心)
- 在ADF中使用jspx做弹窗
- LeetCode.168
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- 你看得懂的海明码校验和纠错原理(一)
- linux-mysql基本命令大全-增删查改
- 正则表达式中的?
- Java自动生成H5游戏资源版文件的版本号
- 关于JPanel中添加按钮文本框之类的组件,组件不会自动转行的问题
- 搜索bfs/dfs
- 多表关联
- WebView写入数据到 localStorage总结