@dxzmpk/js-algorithms-data-structures
Version:
Algorithms and data-structures implemented on JavaScript
74 lines (47 loc) • 1.32 kB
Markdown
# Regular Expression Matching
Given an input string `s` and a pattern `p`, implement regular
expression matching with support for `.` and `*`.
- `.` Matches any single character.
- `*` Matches zero or more of the preceding element.
The matching should cover the **entire** input string (not partial).
**Note**
- `s` could be empty and contains only lowercase letters `a-z`.
- `p` could be empty and contains only lowercase letters `a-z`, and characters like `.` or `*`.
## Examples
**Example #1**
Input:
```
s = 'aa'
p = 'a'
```
Output: `false`
Explanation: `a` does not match the entire string `aa`.
**Example #2**
Input:
```
s = 'aa'
p = 'a*'
```
Output: `true`
Explanation: `*` means zero or more of the preceding element, `a`.
Therefore, by repeating `a` once, it becomes `aa`.
**Example #3**
Input:
```
s = 'ab'
p = '.*'
```
Output: `true`
Explanation: `.*` means "zero or more (`*`) of any character (`.`)".
**Example #4**
Input:
```
s = 'aab'
p = 'c*a*b'
```
Output: `true`
Explanation: `c` can be repeated 0 times, `a` can be repeated
1 time. Therefore it matches `aab`.
## References
- [YouTube](https://www.youtube.com/watch?v=l3hda49XcDE&list=PLLXdhg_r2hKA7DPDsunoDZ-Z769jWn4R8&index=71&t=0s)
- [LeetCode](https://leetcode.com/problems/regular-expression-matching/description/)