思路
DP
var longestPalindromeSubseq = function(s) {
// dp
let dp =Array.from(Array(s.length),()=>Array(s.length).fill(0))
for(let i=0;i<s.length;i++){
dp[i][i] =1
}
// 要保证左下右都是被计算过的,所以行要从下往上遍历,列从左往右
for(let i=s.length-1;i>=0;i--){
for(let j=i+1;j<s.length;j++){
if(s[i]===s[j]){
dp[i][j] =dp[i+1][j-1]+2
}else{
dp[i][j] =Math.max(dp[i][j-1],dp[i+1][j])
}
}
}
return dp[0][s.length-1]
};
2.一个很神奇的思路
翻转字符串,然后求这两个字符串的公共最长子序列,就是答案了!!