Skip to content

Commit bd0a467

Browse files
authored
feat: add rust solution to lc problem: No.0115 (doocs#1281)
1 parent 5f4b0ed commit bd0a467

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed

solution/0100-0199/0115.Distinct Subsequences/README.md

+31
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,37 @@ public:
162162
};
163163
```
164164
165+
### **Rust**
166+
167+
```rust
168+
impl Solution {
169+
#[allow(dead_code)]
170+
pub fn num_distinct(s: String, t: String) -> i32 {
171+
let n = s.len();
172+
let m = t.len();
173+
let mut dp: Vec<Vec<u64>> = vec![vec![0; m + 1]; n + 1];
174+
175+
// Initialize the dp vector
176+
for i in 0..=n {
177+
dp[i][0] = 1;
178+
}
179+
180+
// Begin the actual dp process
181+
for i in 1..=n {
182+
for j in 1..=m {
183+
dp[i][j] = if s.as_bytes()[i - 1] == t.as_bytes()[j - 1] {
184+
dp[i - 1][j] + dp[i - 1][j - 1]
185+
} else {
186+
dp[i - 1][j]
187+
}
188+
}
189+
}
190+
191+
dp[n][m] as i32
192+
}
193+
}
194+
```
195+
165196
### **TypeScript**
166197

167198
```ts

solution/0100-0199/0115.Distinct Subsequences/README_EN.md

+31
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,37 @@ public:
132132
};
133133
```
134134
135+
### **Rust**
136+
137+
```rust
138+
impl Solution {
139+
#[allow(dead_code)]
140+
pub fn num_distinct(s: String, t: String) -> i32 {
141+
let n = s.len();
142+
let m = t.len();
143+
let mut dp: Vec<Vec<u64>> = vec![vec![0; m + 1]; n + 1];
144+
145+
// Initialize the dp vector
146+
for i in 0..=n {
147+
dp[i][0] = 1;
148+
}
149+
150+
// Begin the actual dp process
151+
for i in 1..=n {
152+
for j in 1..=m {
153+
dp[i][j] = if s.as_bytes()[i - 1] == t.as_bytes()[j - 1] {
154+
dp[i - 1][j] + dp[i - 1][j - 1]
155+
} else {
156+
dp[i - 1][j]
157+
}
158+
}
159+
}
160+
161+
dp[n][m] as i32
162+
}
163+
}
164+
```
165+
135166
### **TypeScript**
136167

137168
```ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
impl Solution {
2+
#[allow(dead_code)]
3+
pub fn num_distinct(s: String, t: String) -> i32 {
4+
let n = s.len();
5+
let m = t.len();
6+
let mut dp: Vec<Vec<u64>> = vec![vec![0; m + 1]; n + 1];
7+
8+
// Initialize the dp vector
9+
for i in 0..=n {
10+
dp[i][0] = 1;
11+
}
12+
13+
// Begin the actual dp process
14+
for i in 1..=n {
15+
for j in 1..=m {
16+
dp[i][j] = if s.as_bytes()[i - 1] == t.as_bytes()[j - 1] {
17+
dp[i - 1][j] + dp[i - 1][j - 1]
18+
} else {
19+
dp[i - 1][j]
20+
}
21+
}
22+
}
23+
24+
dp[n][m] as i32
25+
}
26+
}

0 commit comments

Comments
 (0)