516. 最长回文子序列
给定一个字符串 s ,找到其中最长的回文子序列,并返回该序列的长度。不连续。可以假设 s 的最大长度为 1000
输入:
“bbbab”
输出:
4
//二维dp,时空On^2func longestPalindromeSubseq(s string) int {n := len(s)dp := make([][]int, n+1)for i := range dp {dp[i] = make([]int, n+1)dp[i][i] = 1}for i := n-1; i >= 0; i-- { //倒序遍历for 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]}func max(x int, y int) int {if x > y {return x}return y}
