Advertisement
imashutosh51

Regular Expression Matching

Oct 30th, 2022 (edited)
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. /*
  2. Check for wildcard string matching,Both problem is similar
  3. Question:
  4. '.' can match with any character
  5. 'a*' can match with '','a','aa','aaa','aaaa' etc.
  6. */
  7.  
  8. bool fun(string s,string p,int i,int j,vector<vector<int>> &dp){
  9.     if(i<=0 && j<=0) return true;
  10.     if(j<=0) return false;
  11.     if(dp[i][j]!=-1) return dp[i][j];
  12.     int ans=0;
  13.     if((i>0 && s[i-1]==p[j-1] ) ||(i>0 && p[j-1]=='.'))  //for second condition we are also adding i>0 because . should matched with some character.
  14.             ans=fun(s,p,i-1,j-1,dp);
  15.     else if(p[j-1]=='*'){
  16.         ans=fun(s,p,i,j-2,dp);
  17.         if((i>0 && j>1 && s[i-1]==p[j-2]) ||(i>0 && p[j-2]=='.'))
  18.                 ans=ans || fun(s,p,i-1,j,dp);
  19.         }
  20.     dp[i][j]=ans;
  21.     return ans;
  22.  
  23. }
  24.  
  25.  
  26. class Solution {
  27. public:
  28.     bool isMatch(string s, string p) {
  29.         vector <vector <int>> dp(s.size()+1,vector <int>(p.size()+1,-1));
  30.         return fun(s,p,s.size(),p.size(),dp);
  31.     }
  32. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement