“ssipp”
与
“s * p*”
得到答案错误
调试没反应
注意
||
前面会改变后面用到的变量(string)
class Solution {
public:
bool f(string s, string p,bool star) {
int i=s.length()-1;
int j=p.length()-1;
bool ans;
if(p[j]=='*')
{
star=1;
--j;
}
if(i==0&&j==0)
return true;
if(i<0||j<0)
return false;
if(star==true)//好像第一个||会改变p值影响第二个||所以啰嗦用if
{if(f(s,p.erase(j+1),false))
return true;
if((s[i]!=p[j]||p[j]!='.')&&f(s,p.erase(j),false))
return true;
else if((s[i]==p[j]||p[j]=='.')&&f(s.erase(i),p,true));//));
return true;
}
if(p[j]=='.'||i>0&&j>0&&p[j]==s[i])
return f(s.erase(i),p.erase(j),false);
return false;
}
bool isMatch(string s, string p)
{
string voi= " ";
s.insert( 0, voi );
p.insert( 0, voi );
return f(s,p,false);
}
};