Skip to content

Commit 818d587

Browse files
committed
change to my own words edition
1 parent 5791d79 commit 818d587

File tree

1 file changed

+33
-32
lines changed

1 file changed

+33
-32
lines changed
Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,49 @@
11
public class Solution {
2-
32
public int minCut(String s) {
4-
final char[] S = s.toCharArray();
5-
final int N = S.length;
3+
char[] S = s.toCharArray();
64

7-
if(N == 0) return 0;
8-
if(N == 1) return 0;
9-
if(N == 2) return S[0] == S[1] ? 0 : 1;
5+
if(S.length == 0) return 0;
106

11-
boolean[][] P = new boolean[N][N];
7+
boolean[][] P = new boolean[S.length][S.length];
128

13-
for(int i = 0; i < N - 1; i++){
14-
P[i][i] = true;
15-
P[i][i + 1] = S[i] == S[i + 1];
16-
}
9+
// len 1
10+
Arrays.fill(P[1 - 1], true);
1711

18-
P[N - 1][N - 1] = true;
12+
// len 2
13+
for(int i = 0; i < S.length - 1; i++){
14+
P[2 - 1][i] = S[i] == S[i + 2 - 1];
15+
}
1916

20-
for(int j = 2; j < N; j++){
21-
for(int i = 0; i < j; i++){
22-
P[i][j] |= P[i + 1][j - 1] && S[i] == S[j];
17+
// len 3 to max
18+
for(int len = 3; len <= S.length; len++){
19+
20+
for(int i = 0; i < S.length - (len - 1); i++){
21+
P[len - 1][i] = P[len - 1 - 2][i + 1] && S[i] == S[i + len - 1];
2322
}
2423
}
2524

26-
27-
int mincut[] = new int[N + 1]; // i -> end
28-
29-
for(int i = N - 2; i >= 0; i--){
30-
31-
if(P[i][N - 1]) {
32-
mincut[i] = 0;
33-
} else {
34-
mincut[i] = mincut[i + 1] + 1;
35-
36-
for(int j = i + 1; j < N; j++){
37-
if(P[i][j]){
38-
mincut[i] = Math.min(1 + mincut[j + 1], mincut[i]);
25+
int[] mincut = new int[S.length + 1];
26+
27+
mincut[0] = 0;
28+
mincut[1] = 0;
29+
30+
for(int len = 2; len <= S.length; len++){
31+
32+
if(P[len - 1][0]){
33+
mincut[len] = 0;
34+
}else{
35+
36+
mincut[len] = mincut[len - 1] + 1;
37+
38+
for(int i = 1; i < len - 1; i++){
39+
40+
if(P[len - i - 1][i]){
41+
mincut[len] = Math.min(mincut[i] + 1 , mincut[len]);
3942
}
4043
}
41-
//mincut = Math.min(minCut(s.substring(i + 1)) + 1, mincut);
4244
}
4345
}
44-
45-
return mincut[0];
4646

47+
return mincut[S.length];
4748
}
48-
}
49+
}

0 commit comments

Comments
 (0)