区间dp问题,也最长公共子串差不多的模式,还不是很熟,这个题的f[l][r]代表区间l到r内最大的回文串。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int N = 1010;
static char s[];
static int f[][];
static void init() {
f = new int[N][N];
}
public static void main(String[] args) throws IOException {
s = br.readLine().toCharArray();
init();
int n = s.length;
for (int len = 1; len <= n; len++) {
for (int l = 0; l + len - 1 < n; l++) {
int r = l + len - 1;
if (len == 1) f[l][r] = 1;
else {
if (s[l] == s[r]) f[l][r] = f[l + 1][r - 1] + 2;
f[l][r] = Math.max(f[l][r], f[l + 1][r]);
f[l][r] = Math.max(f[l][r], f[l][r - 1]);
}
}
}
System.out.println(n - f[0][n - 1]);
}
}