- C++
class Solution { public: bool isMatch(string s, string p) { int sl = s.length(); int pl = p.length(); bool** dp = new bool*[sl + 1]; for(int i=0;i<=sl;i++){ dp[i] = new bool[pl + 1]{false}; } dp[0][0] = true; for(int i=1;i<=pl;i++){ if(p[i-1]=='*'){ dp[0][i] = dp[0][i-2]; }else{ dp[0][i] = false; } } for(int i=1;i<=sl;i++){ for(int j=1;j<=pl;j++){ if(s[i-1]==p[j-1]||p[j-1]=='.'){ dp[i][j] = dp[i-1][j-1]; }else if(p[j-1]=='*'){ if(s[i-1]==p[j-2]||p[j-2]=='.'){ dp[i][j] = dp[i][j-1] || dp[i-1][j] || dp[i][j-2]; }else{ dp[i][j] = dp[i][j-2]; } } } } bool result = dp[sl][pl]; for(int i=0;i<=sl;i++){ delete[] dp[i]; } delete[] dp; return result; } };
LeetCode-10 正則表達式匹配
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.