算法练习(13):Regular Expression Matching
来源:互联网 发布:java long 类型长度 编辑:程序博客网 时间:2024/06/18 13:48
题意:实现一个正则匹配函数,判断输入的正则式和输入的字符串是否匹配,规则如上图
分析与思路:这道题要是没有*,就是个非常容易的题目,但是加了个*,就要特殊处理了,因为*是不限制个数的,所以很容易就想到了循环或者递归来处理这个情况。而我的想法是用递归来实现的,把匹配完的部分都截掉,这样就可以明确了*的位置,也就是下标1的位置,这样就需要判断首字符了。*的处理方法呢,我分为0个和多个两种情况,多个的话,我采取一个个匹配的方法。
代码:
#include<iostream>#include<string>using namespace std;string subString(string fa, int i) {//取子字符串return string(fa, i, fa.length() - i);}class Solution {public:bool isMatch(string text, string pattern) {if (pattern.length() == 0) return text.length() == 0;//匹配模式为空的情况bool firstmatch = 0;if ((text.length() != 0) && (pattern[0] == text[0] || pattern[0] == '.')) {//判断第一个字符是否匹配firstmatch = true;}else firstmatch = false;if (pattern.length() >= 2 && pattern[1] == '*') {//判断有*的情况return (isMatch(text, subString(pattern, 2)) || (firstmatch&&isMatch(subString(text, 1), pattern)));}//*代表0个的情况和多个的情况else {return firstmatch&&isMatch(subString(text, 1), subString(pattern, 1));}//无*的情况}};
阅读全文
0 0
- 算法练习(13):Regular Expression Matching
- 【LeetCode算法练习(C++)】Regular Expression Matching
- 算法分析课每周练习 Regular Expression Matching
- LeetCode -- Regular Expression Matching 【算法】
- LeetCode 题解(13):Regular Expression Matching
- Regular Expression Matching(LeedCode)
- LeetCode OJ算法题(十):Regular Expression Matching
- 算法w2——Regular Expression Matching(leetcode 10)
- 每日算法之九:Regular Expression Matching
- LeetCode算法题目: Regular Expression Matching
- (算法分析Week9)Regular Expression Matching[Hard]
- 【LeetCode010算法/编程练习C++】Regular Expression Matching//挺烦的一条……
- LeetCode | Regular Expression Matching(未完成)
- LeetCode(10) Regular Expression Matching
- LeetCode(10) - Regular Expression Matching
- 10. Regular Expression Matching(很重要!!!)
- LeetCode 10. Regular Expression Matching(hard)
- Leetcode(10)Regular Expression Matching
- 6、C++修改Lua中Table的内容
- C++中访问控制与继承
- iOS
- Android设计模式-策略模式(Strategy Pattern)
- Hive部署安装
- 算法练习(13):Regular Expression Matching
- 多线程编程基础02
- 三大WEB服务器对比分析(apache ,lighttpd,nginx)
- 7、C++处理Lua中的存在嵌套(循环)的Table
- jdk8 tomcat8 环境下无法正常用dubbo
- 8、Lua中调用C++函数
- Eclipse搭建maven项目—HelloWorld程序(2)
- 【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- Matlab-------regexp正则表达式