Skip to content

Commit 494102d

Browse files
committed
feat: add solutions to lc problem: No.0940
No.0940.Distinct Subsequences II
1 parent edff769 commit 494102d

File tree

5 files changed

+159
-0
lines changed

5 files changed

+159
-0
lines changed

solution/0900-0999/0940.Distinct Subsequences II/README.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,64 @@ func distinctSubseqII(s string) int {
237237
}
238238
```
239239

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 = 1e9 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+
240298
### **...**
241299

242300
```

solution/0900-0999/0940.Distinct Subsequences II/README_EN.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,64 @@ func distinctSubseqII(s string) int {
203203
}
204204
```
205205

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 = 1e9 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+
206264
### **...**
207265

208266
```
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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+
}

0 commit comments

Comments
 (0)