Skip to content

Commit 9009df1

Browse files
committed
Time: 182 ms (19.83%), Space: 9.4 MB (76.14%) - LeetHub
1 parent 4e3a57a commit 9009df1

File tree

1 file changed

+24
-30
lines changed

1 file changed

+24
-30
lines changed
Lines changed: 24 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,31 @@
11
class Solution {
22
public:
3-
4-
int helper(int i, int j, string& s, string& p, vector<vector<int>>& dp){
5-
6-
if(i < 0 and j < 0)
7-
return true;
8-
if(j < 0 and i >= 0)
9-
return false;
10-
if(i < 0 and j >= 0)
11-
{
12-
for(int ii = 0; ii<=j; ++ii)
13-
{
14-
if(p[ii] != '*')
15-
return false;
16-
}
17-
return true;
18-
}
19-
20-
if(dp[i][j] != -1)
21-
return dp[i][j];
22-
23-
if(s[i] == p[j] or p[j] == '?')
24-
return dp[i][j] = helper(i-1,j-1,s,p,dp);
25-
if(p[j] == '*')
26-
return dp[i][j] = helper(i-1,j,s,p,dp) | helper(i,j-1,s,p,dp);
27-
return dp[i][j] = false;
28-
}
29-
3+
304
bool isMatch(string s, string p) {
315

32-
int n = s.size(), m = p.size();
33-
vector<vector<int>> dp(n+1,vector<int>(m+1,-1));
34-
return helper(n-1,m-1,s,p,dp);
6+
int n=p.size();
7+
int m=s.size();
8+
vector<vector<bool>> dp(n+1,vector<bool>(m+1,false));
9+
dp[0][0]=true;
10+
for(int j=1;j<=m;j++) dp[0][j]=false;
11+
for(int i=1;i<=n;i++){
12+
bool flag=true;
13+
for(int k=1;k<=i;k++){
14+
if(p[k-1]!='*'){
15+
flag=false;
16+
break;
17+
}
18+
}
19+
dp[i][0]=flag;
20+
}
3521

22+
for(int i=1;i<=n;i++){
23+
for(int j=1;j<=m;j++){
24+
if(p[i-1]==s[j-1] || p[i-1]=='?') dp[i][j]=dp[i-1][j-1];
25+
else if(p[i-1]=='*') dp[i][j]=dp[i-1][j] || dp[i][j-1];
26+
else dp[i][j]=false;
27+
}
28+
}
29+
return dp[n][m];
3630
}
3731
};

0 commit comments

Comments
 (0)