题目描述
正则表达式匹配
请实现一个函数用来匹配包括’.‘和’*‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配
源码
class Solution {
public:
bool charMatch(char c1,char c2)
{
// if(c1 == '\0') return false;
if(c1 ==c2 ||(c2=='.'&& c1!='\0')) return true;
else return false;
}
bool match(char* str, char* pattern)
{
if(str[0] == '\0'&& pattern[0]=='\0') return true ;
if(str[0] == '\0')
{
if(pattern[1] == '*')
return match(str,pattern+2);
return false;
}
// if(pattern[0] == '\0') return false;
if(charMatch(str[0],pattern[0]))
{
if(pattern[1]=='*')//注意,由于不知道‘*’需要代表多少个字符,故此时有两种选择,pass'*'或者不pass'*:
return match(str+1,pattern)||match(str,pattern+2);
return match(str+1,pattern+1);
}
if(pattern[1] == '*')
{
return match(str,pattern+2);
}
return false;
}
};