解题步骤:
参考代码:
class Solution {
public:bool isMatch(string s, string p) {int m=s.size();int n=p.size();//为了调整映射关系s=' '+s;p=' '+p;//多开一行+多开一列vector<vector<bool>> dp(m+1,vector<bool>(n+1,false));//初始化//dp[0][0]表示s和p都是空串,能匹配,所以dp[0][0]=truedp[0][0]=true;for(size_t j=1;j<=n;j++){if(p[j]=='*'){dp[0][j]=true;}else{//后面的全是false,dp表中的值本来就是false,所以可以直接跳出break;}}for(size_t i=1;i<=m;i++){for(size_t j=1;j<=n;j++){//p[j]为普通字符if(p[j]!='?'&&p[j]!='*'){if(s[i]==p[j]){dp[i][j]=dp[i-1][j-1];}}else if(p[j]=='?'){dp[i][j]=dp[i-1][j-1];}else if(p[j]=='*'){dp[i][j]=dp[i][j-1]+dp[i-1][j];}}}return dp[m][n];}
};
你学会了吗???