#yyds干货盘点# 动态规划专题:最长回文子序列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# 动态规划专题:最长回文子序列相关的知识,希望对你有一定的参考价值。
1.简述:
给定一个字符串,找到其中最长的回文子序列,并返回该序列的长度。
注:回文序列是指这个序列无论从左读还是从右读都是一样的。
本题中子序列字符串任意位置删除k(len(s)>=k>=0)个字符后留下的子串。
数据范围:字符串长度满足
进阶:空间复杂度 , 时间复杂度
输入一个字符串
输出最长回文子序列
输入:
abccsb
输出:
4
分别选取第2、3、4、6位上的字符组成“bccb”子序列是最优解
输入:
abcdewa
输出:
3
分别选取第一个和最后一个a,再取中间任意一个字符就是最优解
2.代码实现:
public int longestPalindromeSubseq(String s)
int n = s.length();
int[][] dp = new int[n][n];
for (int i = n - 1; i >= 0; i--)
dp[i][i] = 1;
char c1 = s.charAt(i);
for (int j = i + 1; j < n; j++)
char c2 = s.charAt(j);
if (c1 == c2)
dp[i][j] = dp[i + 1][j - 1] + 2;
else
dp[i][j] = Math.max(dp[i + 1][j], dp[i][j - 1]);
return dp[0][n - 1];
以上是关于#yyds干货盘点# 动态规划专题:最长回文子序列的主要内容,如果未能解决你的问题,请参考以下文章