
解题步骤:





参考代码:
- class Solution {
- public:
- bool isMatch(string s, string p) {
- int m=s.size();
- int n=p.size();
- //处理后续映射关系
- s=' '+s;
- //处理后续映射关系
- p=' '+p;
- vector
bool>> dp(m+1,vector<bool>(n+1)); - //初始化
- dp[0][0]=true;
- for(size_t j=2;j<=n;j+=2)
- {
- if(p[j]=='*')
- {
- dp[0][j]=true;
- }
- else
- {
- break;
- }
- }
- //填表
- for(size_t i=1;i<=m;i++)
- {
- for(size_t j=1;j<=n;j++)
- {
- if(p[j]=='*')
- {
- dp[i][j]=dp[i][j-2]||(p[j-1]=='.'||s[i]==p[j-1])&&dp[i-1][j];
- }
- else
- {
- dp[i][j]=(s[i]==p[j]||p[j]=='.')&&dp[i-1][j-1];
- }
- }
- }
-
- return dp[m][n];
-
- }
- };