今天很开心啊,先是在单词拆分2中用动态规划(单词规划1的解)加DFS把题解出来后信心大增,然后尝试做了下这第10题,时隔2个月终于给做出来了。用DP解时间复杂度更低但我现在水平还差些,但与2个月前琢磨1天写了100多行if else的自己比算很有进步了,很开心。
贴个代码
class Solution {
public:
bool isMatch(string s, string p) {
S=s;
P=p;
PS=s.size();
PN=p.size();
dfs(0,0);
return ok;
}
void dfs(int poss,int posp)
{
if(ok)
return;
if(poss==PS&&posp==PN)
{
ok=true;
return;
}
if(poss>PS||posp>PN)
return;
if(posp<PN-1&&P[posp+1]=='*')
{
int t = times(poss,posp);
for(int i=0;i<=t;i++)
{
dfs(poss+i,posp+2);
}
}
if(S[poss]!=P[posp]&&P[posp]!='.')
return;