mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2026-03-13 08:51:02 +08:00
Add regular expression matching algorithm.
This commit is contained in:
73
src/algorithms/string/regular-expression-matching/README.md
Normal file
73
src/algorithms/string/regular-expression-matching/README.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 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/)
|
||||
Reference in New Issue
Block a user