10. Regular Expression Matching
来源:互联网 发布:淘宝原创衣服品牌 编辑:程序博客网 时间:2024/04/19 19:56
需要用递归Recursion来解,大概思路如下:
- 若p为空,若s也为空,返回true,反之返回false
- 若p的长度为1,若s长度也为1,且相同或是p为'.'则返回true,反之返回false
- 若p的第二个字符不为*,若此时s为空返回false,否则判断首字符是否匹配,且从各自的第二个字符开始调用递归函数匹配
- 若p的第二个字符为*,因为不能确定*到底会匹配几个,在当前字符匹配的前提下,要枚举所有的情况,从假设匹配0个,1个,2个。。。只要有一种情况成功了,最终也就成功了。
- 返回调用递归函数匹配s和去掉前两个字符的p的结果
class Solution {public: bool isMatch(string s, string p) { if(p.empty()) return s.empty(); if(p.size() == 1){ return (s.size() == 1 && (s[0] == p[0] || p[0] == '.')); } if(p[1] != '*'){ if(s.empty()) return false; return (s[0] == p[0] || p[0] == '.') && isMatch(s.substr(1), p.substr(1)); } while(!s.empty() && (s[0] == p[0] || p[0] == '.')){ if(isMatch(s, p.substr(2))) return true; s = s.substr(1); } return isMatch(s, p.substr(2)); }};
还有动态规划方法,参考http://www.cnblogs.com/grandyang/p/4461713.html
阅读全文
0 0
- 10. Regular Expression Matching
- 10.Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 10. Regular Expression Matching
- 成绩总汇
- 20171023测试
- Ubuntu16.04中将python3设置为默认
- CodeForces292C Beautiful IP Addresses(简单搜索加大暴力乱搞)
- [转载]SQL语句中LEFT JOIN ON WHERE和LEFT JOIN ON AND的区别
- 10. Regular Expression Matching
- Idea Intellij加载项目之后端口号修改
- 购物车(二级列表)
- etherem创世块的创建、创建账户以及账户间的建立通道
- Android Recyclerview适配器 加载头部 以及自定义View
- 大话设计模式----开放-封闭原则
- nginx 服务器上Laravel5.1框架的一些配置
- 腾讯云 centos7 配置服务器所需要知道的
- 面试Java web,有关于hibernate一般都问什么问题?