Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit df7cd60

Browse files
authored
feat: add rust solution to lc problem: No.0010 (doocs#1529)
1 parent d932a9c commit df7cd60

File tree

3 files changed

+124
-0
lines changed

3 files changed

+124
-0
lines changed

‎solution/0000-0099/0010.Regular Expression Matching/README.md‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,49 @@ public:
244244
};
245245
```
246246

247+
### **Rust**
248+
249+
```rust
250+
impl Solution {
251+
#[allow(dead_code)]
252+
pub fn is_match(s: String, p: String) -> bool {
253+
let n = s.len();
254+
let m = p.len();
255+
let s = s.chars().collect::<Vec<char>>();
256+
let p = p.chars().collect::<Vec<char>>();
257+
258+
let mut dp = vec![vec![false; m + 1]; n + 1];
259+
260+
// Initialize the dp vector
261+
dp[0][0] = true;
262+
263+
for i in 1..=m {
264+
if p[i - 1] == '*' {
265+
dp[0][i] = dp[0][i - 2];
266+
}
267+
}
268+
269+
// Begin the actual dp process
270+
for i in 1..=n {
271+
for j in 1..=m {
272+
if s[i - 1] == p[j - 1] || p[j - 1] == '.' {
273+
dp[i][j] = dp[i - 1][j - 1];
274+
}
275+
if p[j - 1] == '*' {
276+
if j >= 2 && (s[i - 1] == p[j - 2] || p[j - 2] == '.') {
277+
dp[i][j] = dp[i - 1][j] || dp[i][j - 2];
278+
} else if j >= 2 && s[i - 1] != p[j - 2] {
279+
dp[i][j] = dp[i][j - 2];
280+
}
281+
}
282+
}
283+
}
284+
285+
dp[n][m]
286+
}
287+
}
288+
```
289+
247290
### **Go**
248291

249292
```go

‎solution/0000-0099/0010.Regular Expression Matching/README_EN.md‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,49 @@ public:
208208
};
209209
```
210210

211+
### **Rust**
212+
213+
```rust
214+
impl Solution {
215+
#[allow(dead_code)]
216+
pub fn is_match(s: String, p: String) -> bool {
217+
let n = s.len();
218+
let m = p.len();
219+
let s = s.chars().collect::<Vec<char>>();
220+
let p = p.chars().collect::<Vec<char>>();
221+
222+
let mut dp = vec![vec![false; m + 1]; n + 1];
223+
224+
// Initialize the dp vector
225+
dp[0][0] = true;
226+
227+
for i in 1..=m {
228+
if p[i - 1] == '*' {
229+
dp[0][i] = dp[0][i - 2];
230+
}
231+
}
232+
233+
// Begin the actual dp process
234+
for i in 1..=n {
235+
for j in 1..=m {
236+
if s[i - 1] == p[j - 1] || p[j - 1] == '.' {
237+
dp[i][j] = dp[i - 1][j - 1];
238+
}
239+
if p[j - 1] == '*' {
240+
if j >= 2 && (s[i - 1] == p[j - 2] || p[j - 2] == '.') {
241+
dp[i][j] = dp[i - 1][j] || dp[i][j - 2];
242+
} else if j >= 2 && s[i - 1] != p[j - 2] {
243+
dp[i][j] = dp[i][j - 2];
244+
}
245+
}
246+
}
247+
}
248+
249+
dp[n][m]
250+
}
251+
}
252+
```
253+
211254
### **Go**
212255

213256
```go
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
impl Solution {
2+
#[allow(dead_code)]
3+
pub fn is_match(s: String, p: String) -> bool {
4+
let n = s.len();
5+
let m = p.len();
6+
let s = s.chars().collect::<Vec<char>>();
7+
let p = p.chars().collect::<Vec<char>>();
8+
9+
let mut dp = vec![vec![false; m + 1]; n + 1];
10+
11+
// Initialize the dp vector
12+
dp[0][0] = true;
13+
14+
for i in 1..=m {
15+
if p[i - 1] == '*' {
16+
dp[0][i] = dp[0][i - 2];
17+
}
18+
}
19+
20+
// Begin the actual dp process
21+
for i in 1..=n {
22+
for j in 1..=m {
23+
if s[i - 1] == p[j - 1] || p[j - 1] == '.' {
24+
dp[i][j] = dp[i - 1][j - 1];
25+
}
26+
if p[j - 1] == '*' {
27+
if j >= 2 && (s[i - 1] == p[j - 2] || p[j - 2] == '.') {
28+
dp[i][j] = dp[i - 1][j] || dp[i][j - 2];
29+
} else if j >= 2 && s[i - 1] != p[j - 2] {
30+
dp[i][j] = dp[i][j - 2];
31+
}
32+
}
33+
}
34+
}
35+
36+
dp[n][m]
37+
}
38+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /