您的位置:首页 > 其它

leetcode Regular Expression Matching

2016-03-10 10:54 375 查看
题目链接

public class Solution {
public boolean isMatch(String s, String p) {

return help(s,0,p,0);
}

public boolean help(String s,int startS,String p,int startP)
{
if(startP>=p.length())
{
return startS>=s.length();
}

char pchar=p.charAt(startP);
if(startP!=p.length()-1)
{

char pNextChar=p.charAt(startP+1);
if(pNextChar=='*')
{
while(startS<s.length()&&(s.charAt(startS)==pchar||pchar=='.'))
{
if(help(s, startS, p, startP+2))
{
return true;
}
startS++;
}
return help(s, startS, p, startP+2);
}
else
{
if(startS<s.length()&&(s.charAt(startS)==pchar||pchar=='.'))
{
return help(s, startS+1, p, startP+1);
}
return false;
}

}
else
{
if(startS<s.length()&&(s.charAt(startS)==pchar||pchar=='.'))
{
return help(s, startS+1, p, startP+1);
}
return false;
}

}
}


如果看不懂我的代码。下面我贴上一个牛人的代码

#include<iostream>
using namespace std;
bool isMatch(const char *s, const char *p) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (*p == 0) return *s == 0;
if (*(p+1) != '*')
{
if (*s != 0 && (*p == *s || *p == '.')) return isMatch(s+1, p+1);

return false;
}
else
{
// *s == *p
while (*s != 0 && (*s == *p || *p == '.'))
{
if (isMatch(s, p+2)) return true;
s++;
}
return (isMatch(s, p+2));
}
}

int main()
{
if(isMatch("ab",".*c"))
{

cout<<"yes"<<endl;
}
else
{

cout<<"no"<<endl;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: