基本方法,必须掌握!
class Solution {
public int minInsertions(String s) {
int n = s.length();
if (n < 2) {
return 0;
}
int[][] dp = new int[n][n]; // 对于字符串s[i:j], 至少需要dp[i][j]次操作构成回文串
for (int i = n - 2; i >= 0; --i) {
for (int j = i + 1; j < n; ++j) {
if (s.charAt(i) == s.charAt(j)) {
dp[i][j] = dp[i + 1][j - 1];
} else {
dp[i][j] = Math.min(dp[i + 1][j], dp[i][j - 1]) + 1;
}
}
}
return dp[0][n - 1];
}
}