🌪️

最长回文子串

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];
}
你觉得这篇文章怎么样?
YYDS
比心
加油
菜狗
views

Loading Comments...