Skip to content

Commit

Permalink
Merge pull request neetcode-gh#952 from miladra/main
Browse files Browse the repository at this point in the history
Add 10-Regular-Expression-Matching
  • Loading branch information
neetcode-gh authored Aug 27, 2022
2 parents 2587b27 + a2d33bc commit 0b6e3c5
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ If you would like to have collaborator permissions on the repo to merge your own
<sub>[115 - Distinct Subsequences](https://leetcode.com/problems/distinct-subsequences/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
<sub>[72 - Edit Distance](https://leetcode.com/problems/edit-distance/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
<sub>[312 - Burst Balloons](https://leetcode.com/problems/burst-balloons/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
<sub>[10 - Regular Expression Matching](https://leetcode.com/problems/regular-expression-matching/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'></div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
<sub>[10 - Regular Expression Matching](https://leetcode.com/problems/regular-expression-matching/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
<sub>[53 - Maximum Subarray](https://leetcode.com/problems/maximum-subarray/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub>
<sub>[55 - Jump Game](https://leetcode.com/problems/jump-game/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
<sub>[45 - Jump Game II](https://leetcode.com/problems/jump-game-ii/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>✔️</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
Expand Down
31 changes: 31 additions & 0 deletions java/10-Regular-Expression-Matching.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
class Solution {

public boolean isMatch(String s, String p) {

boolean[][] cache = new boolean[s.length() + 1][p.length() + 1];

return dfs(cache , s, p, 0 , 0);
}

private boolean dfs(boolean[][] cache, String s, String p , int i, int j) {

if(cache[i][j] != false)
return cache[i][j];

if( i >= s.length() && j>= p.length())
return true;

if(j >= p.length())
return false;

boolean match = i < s.length() && (s.charAt(i) == p.charAt(j) || p.charAt(j) == '.');

if(j + 1 < p.length() && p.charAt(j+1)== '*' ) {
cache[i][j] = dfs(cache, s, p, i, j+2) || (match && dfs(cache, s, p, i+1, j));
} else {
cache[i][j] = match && dfs(cache, s, p, i+1, j+1);
}

return cache[i][j];
}
}

0 comments on commit 0b6e3c5

Please sign in to comment.