LeetCode之Regular Expression Matching
2015-07-03 21:42
281 查看
/*这道题最关键的是理解题意。最重要的是:当一个字母后面跟着字符'*',表示这个字符重复0次,1次,...,n次。 所以在判断字符串是否匹配时,需要看接下来p的字符是否为'*'字符。分两种情况处理*/ //方法一:递归法 class Solution { public: bool isMatch(string s, string p) { if(p.empty()) return s.empty(); return is_match(s, p, 0, 0); } bool is_match(const string &s, const string &p, int idx_s, int idx_p){ if(idx_p == p.size()) return idx_s == s.size(); if(idx_p + 1 == p.size()) return idx_s+1 == s.size() && (p[idx_p] == s[idx_s] || p[idx_p] == '.'); if(p[idx_p+1] != '*'){ if(p[idx_p] == s[idx_s] || (p[idx_p] == '.' && idx_s < s.size())){ return is_match(s, p, idx_s+1, idx_p+1); } else return false; } while(p[idx_p] == s[idx_s] || (p[idx_p] == '.' && idx_s < s.size())){ if(is_match(s, p, idx_s, idx_p+2)) return true; ++idx_s; } return is_match(s, p, idx_s, idx_p+2); } };
相关文章推荐
- android关于下拉刷新列表的使用列表
- android 数据库sqlite的使用方法
- 第9课 u-boot 分析 初探
- 随机森林 算法过程及分析
- autotools使用(自动生成makefile)
- androidstudio 快捷键大全
- 基因组与数据整合:DNA应用开发正在临近
- 用path动画绘制水波纹
- strcat 函数
- 20150624_OC之@class关键字
- 中国剩余定理
- android ndk学习
- 关于网站重定向
- 20150624_OC之协议与自定义类型的归档
- IQ存储过程中执行有结果集返回的动态SQL的调用方法
- C语言可变参数
- Android逆向分析之dex2jar异常处理
- C++读书笔记:构造函数与析构函数(来自谭浩强的C++程序设计)
- 万能makefile
- .NET开发邮件发送功能的全面教程(含邮件组件源码)