LeetCode #10 正则表达式匹配
2020-02-05 本文已影响0人
HU兔兔
class Solution {
public:
bool isMatch(string s, string p) {
bool dp[s.size()+1][p.size()+1];
int i,j;
i=1;
j=1;
dp[0][0]=true;
while(j<=p.size()){
dp[0][j]=p[j-1]=='*'?dp[0][j-2]:false;
j++;
}
while(i<=s.size()){
dp[i][0]=false;
j=1;
while(j<=p.size()){
if(s[i-1]==p[j-1]||p[j-1]=='.'){
dp[i][j]=dp[i-1][j-1];
}
else if(p[j-1]=='*'){
if(p[j-2]=='.'||p[j-2]==s[i-1]){
dp[i][j]=dp[i][j-2]||dp[i-1][j];
}
else{
dp[i][j]=dp[i][j-2];
}
}
else{
dp[i][j]=false;
}
j++;
}
i++;
}
return dp[s.size()][p.size()];
}
};
![](https://img.haomeiwen.com/i8016535/02108bbc463b9ae8.png)