Skip to content

Commit ac516a3

Browse files
authored
2022-10-09 update: added "Regular Expression Matching" (#129)
1 parent 31cffd0 commit ac516a3

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,7 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
717717
| Name | Link to LeetCode | Link to solution |
718718
|-----------------------------------------------|----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
719719
| 4. Median of Two Sorted Arrays | [Link](https://leetcode.com/problems/median-of-two-sorted-arrays/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/MedianOfTwoSortedArrays.java) |
720+
| 10. Regular Expression Matching | [Link](https://leetcode.com/problems/regular-expression-matching/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/RegularExpressionMatching.java) |
720721
| 23. Merge k Sorted Lists | [Link](https://leetcode.com/problems/merge-k-sorted-lists/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/MergeKSortedLists.java) |
721722
| 25. Reverse Nodes in k-Group | [Link](https://leetcode.com/problems/reverse-nodes-in-k-group/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/ReverseNodesInKGroup.java) |
722723
| 30. Substring with Concatenation of All Words | [Link](https://leetcode.com/problems/substring-with-concatenation-of-all-words/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/SubstringWithConcatenationOfAllWords.java) |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.smlnskgmail.jaman.leetcodejava.hard;
2+
3+
// https://leetcode.com/problems/regular-expression-matching/
4+
public class RegularExpressionMatching {
5+
6+
private final String s;
7+
private final String p;
8+
9+
public RegularExpressionMatching(String s, String p) {
10+
this.s = s;
11+
this.p = p;
12+
}
13+
14+
public boolean solution() {
15+
return isMatch(s, p);
16+
}
17+
18+
private boolean isMatch(String s, String p) {
19+
if (p.isEmpty()) {
20+
return s.isEmpty();
21+
}
22+
boolean m = !s.isEmpty() && (p.charAt(0) == s.charAt(0) || p.charAt(0) == '.');
23+
if (p.length() >= 2 && p.charAt(1) == '*') {
24+
return isMatch(s, p.substring(2)) || (m && isMatch(s.substring(1), p));
25+
}
26+
return m && isMatch(s.substring(1), p.substring(1));
27+
}
28+
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.smlnskgmail.jaman.leetcodejava.hard;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertFalse;
6+
7+
public class RegularExpressionMatchingTest {
8+
9+
@Test
10+
public void defaultTest() {
11+
assertFalse(new RegularExpressionMatching("aa", "a").solution());
12+
}
13+
14+
}

0 commit comments

Comments
 (0)