File tree Expand file tree Collapse file tree 5 files changed +159
-0
lines changed
solution/0900-0999/0940.Distinct Subsequences II Expand file tree Collapse file tree 5 files changed +159
-0
lines changed Original file line number Diff line number Diff line change @@ -237,6 +237,64 @@ func distinctSubseqII(s string) int {
237
237
}
238
238
```
239
239
240
+ ### ** C**
241
+
242
+ ``` c
243
+ int distinctSubseqII (char * s){
244
+ int mod = 1e9 + 7;
245
+ int n = strlen(s);
246
+ int dp[ 26] = {0};
247
+ for (int i = 0 ; i < n; i++) {
248
+ int sum = 0;
249
+ for (int j = 0; j < 26; j++) {
250
+ sum = (sum + dp[ j] ) % mod;
251
+ }
252
+ dp[ s[ i] - 'a'] = sum + 1;
253
+ }
254
+ int res = 0;
255
+ for (int i = 0 ; i < 26; i++) {
256
+ res = (res + dp[ i] ) % mod;
257
+ }
258
+ return res;
259
+ }
260
+ ```
261
+
262
+ ### **TypeScript**
263
+
264
+ ```ts
265
+ function distinctSubseqII(s: string): number {
266
+ const mod = 1e9 + 7;
267
+ const dp = new Array(26).fill(0);
268
+ for (const c of s) {
269
+ dp[c.charCodeAt(0) - 'a'.charCodeAt(0)] =
270
+ dp.reduce((r, v) => (r + v) % mod, 0) + 1;
271
+ }
272
+ return dp.reduce((r, v) => (r + v) % mod, 0);
273
+ }
274
+ ```
275
+
276
+ ### ** Rust**
277
+
278
+ ``` rust
279
+ impl Solution {
280
+ pub fn distinct_subseq_ii (s : String ) -> i32 {
281
+ const MOD : i32 = 1e 9 as i32 + 7 ;
282
+ let mut dp = [0 ; 26 ];
283
+ for u in s . as_bytes () {
284
+ let i = (u - & b 'a' ) as usize ;
285
+ dp [i ] = {
286
+ let mut sum = 0 ;
287
+ dp . iter (). for_each (| & v | sum = (sum + v ) % MOD );
288
+ sum
289
+ } + 1 ;
290
+ }
291
+ let mut res = 0 ;
292
+ dp . iter (). for_each (| & v | res = (res + v ) % MOD );
293
+ res
294
+ }
295
+ }
296
+ ```
297
+
240
298
### ** ...**
241
299
242
300
```
Original file line number Diff line number Diff line change @@ -203,6 +203,64 @@ func distinctSubseqII(s string) int {
203
203
}
204
204
```
205
205
206
+ ### ** C**
207
+
208
+ ``` c
209
+ int distinctSubseqII (char * s){
210
+ int mod = 1e9 + 7;
211
+ int n = strlen(s);
212
+ int dp[ 26] = {0};
213
+ for (int i = 0 ; i < n; i++) {
214
+ int sum = 0;
215
+ for (int j = 0; j < 26; j++) {
216
+ sum = (sum + dp[ j] ) % mod;
217
+ }
218
+ dp[ s[ i] - 'a'] = sum + 1;
219
+ }
220
+ int res = 0;
221
+ for (int i = 0 ; i < 26; i++) {
222
+ res = (res + dp[ i] ) % mod;
223
+ }
224
+ return res;
225
+ }
226
+ ```
227
+
228
+ ### **TypeScript**
229
+
230
+ ```ts
231
+ function distinctSubseqII(s: string): number {
232
+ const mod = 1e9 + 7;
233
+ const dp = new Array(26).fill(0);
234
+ for (const c of s) {
235
+ dp[c.charCodeAt(0) - 'a'.charCodeAt(0)] =
236
+ dp.reduce((r, v) => (r + v) % mod, 0) + 1;
237
+ }
238
+ return dp.reduce((r, v) => (r + v) % mod, 0);
239
+ }
240
+ ```
241
+
242
+ ### ** Rust**
243
+
244
+ ``` rust
245
+ impl Solution {
246
+ pub fn distinct_subseq_ii (s : String ) -> i32 {
247
+ const MOD : i32 = 1e 9 as i32 + 7 ;
248
+ let mut dp = [0 ; 26 ];
249
+ for u in s . as_bytes () {
250
+ let i = (u - & b 'a' ) as usize ;
251
+ dp [i ] = {
252
+ let mut sum = 0 ;
253
+ dp . iter (). for_each (| & v | sum = (sum + v ) % MOD );
254
+ sum
255
+ } + 1 ;
256
+ }
257
+ let mut res = 0 ;
258
+ dp . iter (). for_each (| & v | res = (res + v ) % MOD );
259
+ res
260
+ }
261
+ }
262
+ ```
263
+
206
264
### ** ...**
207
265
208
266
```
Original file line number Diff line number Diff line change
1
+ int distinctSubseqII (char * s ){
2
+ int mod = 1e9 + 7 ;
3
+ int n = strlen (s );
4
+ int dp [26 ] = {0 };
5
+ for (int i = 0 ; i < n ; i ++ ) {
6
+ int sum = 0 ;
7
+ for (int j = 0 ; j < 26 ; j ++ ) {
8
+ sum = (sum + dp [j ]) % mod ;
9
+ }
10
+ dp [s [i ] - 'a' ] = sum + 1 ;
11
+ }
12
+ int res = 0 ;
13
+ for (int i = 0 ; i < 26 ; i ++ ) {
14
+ res = (res + dp [i ]) % mod ;
15
+ }
16
+ return res ;
17
+ }
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn distinct_subseq_ii ( s : String ) -> i32 {
3
+ const MOD : i32 = 1e9 as i32 + 7 ;
4
+ let mut dp = [ 0 ; 26 ] ;
5
+ for u in s. as_bytes ( ) {
6
+ let i = ( u - & b'a' ) as usize ;
7
+ dp[ i] = {
8
+ let mut sum = 0 ;
9
+ dp. iter ( ) . for_each ( |& v| sum = ( sum + v) % MOD ) ;
10
+ sum
11
+ } + 1 ;
12
+ }
13
+ let mut res = 0 ;
14
+ dp. iter ( ) . for_each ( |& v| res = ( res + v) % MOD ) ;
15
+ res
16
+ }
17
+ }
Original file line number Diff line number Diff line change
1
+ function distinctSubseqII ( s : string ) : number {
2
+ const mod = 1e9 + 7 ;
3
+ const dp = new Array ( 26 ) . fill ( 0 ) ;
4
+ for ( const c of s ) {
5
+ dp [ c . charCodeAt ( 0 ) - 'a' . charCodeAt ( 0 ) ] =
6
+ dp . reduce ( ( r , v ) => ( r + v ) % mod , 0 ) + 1 ;
7
+ }
8
+ return dp . reduce ( ( r , v ) => ( r + v ) % mod , 0 ) ;
9
+ }
You can’t perform that action at this time.
0 commit comments