您的位置:首页 > 其它

leetcode 10. Regular Expression Matching

2016-05-18 16:58 218 查看
这道题非递归会很复杂,我使用了递归的方法来解决这个问题。

bool isMatch(char* s, char* p) {
int len_s,len_p;
int i;
len_s=strlen(s);
len_p=strlen(p);
if(s[0]=='\0'&&p[0]=='\0')
return true;
if(p[0]!='.'&&p[1]!='*')
{
if(s[0]==p[0])
return isMatch(s+1,p+1);  //单字符匹配
else
return false;
}
if(p[0]!='.'&&p[1]=='*')
{
for(i=-1;i<len_s;i++)
{
if(i==-1)   //0个p[0]
{
if(isMatch(s,p+2))
return true;
else
continue;
}

if(s[i]==p[0])
{
if(isMatch(s+i+1,p+2))
return true;
}
else
return isMatch(s+i,p+2);
}
}
if(p[0]=='.'&&p[1]!='*')
{
if(s[0]=='\0')
return false;
return isMatch(s+1,p+1);
}
if(p[0]=='.'&&p[1]=='*')
{
for(i=-1;i<len_s;i++)
{
if(i==-1)  //0个
{
if(isMatch(s,p+2))
return true;
else
continue;
}
if(isMatch(s+i+1,p+2))
return true;
}
return false;
}
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: