File tree 3 files changed +88
-0
lines changed
solution/0100-0199/0115.Distinct Subsequences
3 files changed +88
-0
lines changed Original file line number Diff line number Diff line change @@ -162,6 +162,37 @@ public:
162
162
};
163
163
```
164
164
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
+
165
196
### ** TypeScript**
166
197
167
198
``` ts
Original file line number Diff line number Diff line change @@ -132,6 +132,37 @@ public:
132
132
};
133
133
```
134
134
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
+
135
166
### ** TypeScript**
136
167
137
168
``` ts
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments