Skip to content

Commit 69f7906

Browse files
committed
Runtime: 21 ms (Top 82.3%) | Memory: 56.41 MB (Top 50.9%)
1 parent 720a14a commit 69f7906

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Runtime: 21 ms (Top 82.3%) | Memory: 56.41 MB (Top 50.9%)
2+
3+
class Solution {
4+
int mod = 1000000007;
5+
boolean is[];
6+
public int beautifulPartitions(String s, int K, int minLength) {
7+
is = new boolean[10];
8+
is[2] = is[3] = is[5] = is[7] = true;
9+
10+
int n = s.length();
11+
int a[] = new int[n + 1];
12+
for(int i = 0; i < n; i++) a[i + 1] = s.charAt(i) - '0';
13+
if(!is[a[1]]) {
14+
return 0;
15+
}
16+
17+
long dp[][] = new long[n + 1][K + 1];
18+
long m[] = new long[K + 1];
19+
dp[0][0] = 1;
20+
21+
for(int i = 1; i <= n; i++) {
22+
if(i >= minLength) {
23+
int idx = i - minLength;
24+
if(idx == 0 || (!is[a[idx]] && (idx + 1 > n || is[a[idx + 1]]))) { // keep maximum
25+
for(int k = 0; k <= K; k++) {
26+
m[k] += dp[idx][k];
27+
m[k] %= mod;
28+
}
29+
}
30+
}
31+
if(is[a[i]]) continue;
32+
for(int k = 1; k <= K; k++) {
33+
dp[i][k] += m[k - 1];
34+
dp[i][k] %= mod;
35+
}
36+
}
37+
return (int)(dp[n][K]);
38+
}
39+
}

0 commit comments

Comments
 (0)