码迷,mamicode.com
首页 > 其他好文 > 详细

Regular Expression Matching

时间:2015-07-10 09:30:10      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:c++   class   源码   经验   



        题目要求这里不再赘述,有两点点需要注意:

一、"*" 所代表的含义是代表其之前的字符的0个或多个重复。如 “a*” 代表 ‘a‘ 后面跟0个或者多个字符 ‘a‘;

二、用 C++ 实现的话后面函数的入参是 string 型,在这里按字符处理的时候有诸多不便,可以转换为 char * 进行处理。

class Solution {
public:
    bool isMatchChar(const char *s, const char *p){
	if(*p == '\0')
		return *s == '\0';
	if(*(p + 1) != '*'){
		if(*s != '\0' && (*p == *s || *p == '.')){
			return isMatchChar(s + 1, p + 1);
		}else{
			return false;
		}
	}else{
		while(*s != '\0' && (*s == *p || *p == '.')){
			if(isMatchChar(s, p + 2))
				return true;
			s++;
		}
		return isMatchChar(s, p + 2);
	}
}

bool isMatch(string s, string p) {
    int lens = s.length();
    int lenp = p.length();

	char* schar = new char[lens + 1];
	char* pchar = new char[lenp + 1];
	strcpy(schar, s.c_str());
	strcpy(pchar, p.c_str());
	schar[lens] = '\0';
	pchar[lenp] = '\0';

	return isMatchChar(schar, pchar);
}

};





版权声明:本文为博主原创文章,未经博主允许不得转载。

Regular Expression Matching

标签:c++   class   源码   经验   

原文地址:http://blog.csdn.net/ny_mg/article/details/46823623

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!