Regular Expression Matching
来源:互联网 发布:用棒针编织围巾的编程 编辑:程序博客网 时间:2024/06/05 22:25
正则表达式的匹配
'.' 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") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*") → trueisMatch("aa", ".*") → trueisMatch("ab", ".*") → trueisMatch("aab", "c*a*b") → true
题目中已经说明,函数原型是isMatch(const char *s, const char *p)
而我们代码实现部分,题目给出的函数如下: bool isMatch(string s, string p)
函数原型的代码解法网上很多答案,这给出下面string类型的解法。
bool isMatch(string s, string p) { int m = s.length(); int n = p.length(); return backtracking(s,m,p,n); } bool backtracking(string& s, int i, string& p, int j) { if (i == 0 && j == 0) return true; if (i != 0 && j == 0) return false; if (i == 0 && j != 0) { //in this case only p == "c*c*c*" this pattern can match null string if (p[j-1] == '*') { return backtracking(s, i, p, j-2); } return false; } //now both i and j are not null if(p[j-1] == '*') { /* 分两种情况,p[j-2] 等于s[j-1]和不等于的情况 若不等于 直接返回 backtracking(s,i,p,j-2); 若等于,由于*可能匹配一个或多个, 所以可能返回 backtracking(s,i-1,p,j-2); 也可能返回 backtracking(s,i-1,p,j); 还可能返回 backtracking(s,i,p,j-2); */ if(p[j-2] == s[i-1] || p[j-2] == '.') return backtracking(s,i-1,p,j) || backtracking(s,i-1,p,j-2) || backtracking(s,i,p,j-2); else return backtracking(s,i,p,j-2); } if (s[i-1] == p[j-1] || p[j-1] == '.') { return backtracking(s, i - 1, p, j - 1); } return false; }
0 0
- LeetCode: Regular Expression Matching
- LeetCode: Regular Expression Matching
- leetcode Regular Expression Matching
- [Leetcode] Regular Expression Matching
- Regular Expression Matching
- Regular Expression Matching
- [LeetCode]Regular Expression Matching
- Regular Expression Matching
- LeetCode-Regular Expression Matching
- Regular Expression Matching
- Regular Expression Matching LeetCode
- Regular Expression Matching
- LeetCode | Regular Expression Matching
- LeetCode: Regular Expression Matching
- Leetcode: Regular Expression Matching
- [LeetCode] Regular Expression matching
- [LeetCode] Regular Expression Matching
- LeetCode Regular Expression Matching
- UIView Animation
- 【菜鸟学安卓】- 获取网络图片二 BitmapFactory options OutOfMemery问题内存溢出
- linux下安装androidstudio
- 以太网,IP,TCP,UDP数据包分析
- [bzoj4154][Ipsc2015]Generating Synergy
- Regular Expression Matching
- matplotlib 绘图
- MVC中Html.Partial, RenderPartial, Action,RenderAction 区别
- easyui里关于datagrid日期不能正常显示
- Jquery获得相同id的元素
- 父页面、子页面的相互调取
- Redis——Redis与Log4Net完成了分布式日志记录
- libSVM使用方法
- 从用户体验角度看工具