题目: 最长回文子串
int longestPalindromeSubseq(string s) {
int n = s.size();
vector<vector<int>> dp(n+1, vector<int>(n+1, 0));
// i: n-1 -> 0
// j: i+1 -> n-1
// 明确 i 在 j 左边,但是 i 需要从后往前推
for (int i = n-1; i >= 0; i--) {
dp[i][i] = 1;
for (int j = i+1; j < n; j++) {
if (s[i] == s[j]) {
dp[i][j] = dp[i+1][j-1] + 2;
} else {
dp[i][j] = max(dp[i+1][j], dp[i][j-1]);
}
}
}
return dp[0][n-1];
}





Loading Comments...