分割回文串 II
力扣链接:132. 分割回文串 II
题目描述
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。
返回符合要求的 最少分割次数 。
示例
Java代码
class Solution {
public int minCut(String s) {
int n = s.length();
char[] cs = s.toCharArray();
boolean[][] st = new boolean[n][n];
for(int j = 0; j < n; j++) {
for(int i = j; i >= 0; i--) {
if(i == j) {
st[i][j] = true;
}else {
if(j - i + 1 == 2) {
st[i][j] = cs[i] == cs[j];
}else {
st[i][j] = cs[i] == cs[j] && st[i + 1][j - 1];
}
}
}
}
int[] f = new int[n];
for(int j = 1; j < n; j++) {
if(st[0][j]) {
f[j] = 0;
}else {
f[j] = f[j - 1] + 1;
for(int i = 1; i < j; i++) {
if(st[i][j]) {
f[j] = Math.min(f[j], f[i - 1] + 1);
}
}
}
}
return f[n - 1];
}
}