(1)递归会超时,动态规划
class Solution {
public:
bool isMatch(string s, string p) {
int m=s.length(),n=p.length();
vector<vector<bool>> v(m+1,vector<bool>(n+1,false));
v[0][0]=true;
for(int i=1;i<n+1;i++) {
if(p[i-1]=='*') v[0][i]=true;
else break;
}
for(int i=1;i<m+1;i++) {
for(int j=1;j<n+1;j++) {
if(p[j-1]=='*') v[i][j]=v[i-1][j-1]||v[i][j-1]||v[i-1][j];
else if(s[i-1]==p[j-1] || p[j-1]=='?') v[i][j]=v[i-1][j-1];
}
}
return v[m][n];
}
};