首页 > 其他 > 详细

Regular Expression Matching

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


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

一、"*" 所代表的含义是代表其之前的字符的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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!