网站建设 风险,wordpress内容页不显示图片,广州天河区小学排名,外贸销售网站有哪些最长回文子序列问题
问题描述#xff1a;给你一个字符串 s #xff0c;找出其中最长的回文子序列#xff0c;并返回该序列的长度。
子序列定义为#xff1a;不改变剩余字符顺序的情况下#xff0c;删除某些字符或者不删除任何字符形成的一个序列。
注意是子序列而不是子…最长回文子序列问题
问题描述给你一个字符串 s 找出其中最长的回文子序列并返回该序列的长度。
子序列定义为不改变剩余字符顺序的情况下删除某些字符或者不删除任何字符形成的一个序列。
注意是子序列而不是子串 子串是连续的比如”abda”最长回文子串就是”a”或者”b”… 子序列是不连续的比如”abda”最长子序列就是”aba”或者”ada”
示例
输入s bbbab
输出4
解释一个可能的最长回文子序列为 bbbb 。子序列问题本身就相对子串、子数组更困难一些因为前者是不连续的序列而后两者是连续的就算穷举你都不一定会更别说求解相关的算法问题了。
一般来说这类问题都是让你求一个最长子序列因为最短子序列就是一个字符。一旦涉及到子序列和最值考察的是动态规划技巧时间复杂度一般都是 O(n^2)。
既然要用动态规划那就要定义 dp 数组找状态转移关系。
1
int n array.length;
int[] dp new int[n];for (int i 1; i n; i) {for (int j 0; j i; j) {dp[i] 最值(dp[i], dp[j] ...)}
}2
int n arr.length;
int[][] dp new dp[n][n];for (int i 0; i n; i) {for (int j 0; j n; j) {if (arr[i] arr[j]) dp[i][j] dp[i][j] ...elsedp[i][j] 最值(...)}
}该文章会更新欢迎大家批评指正。
推荐一个零声学院免费公开课程个人觉得老师讲得不错 分享给大家[LinuxNginxZeroMQMySQLRedis fastdfsMongoDBZK流媒体CDNP2PK8SDocker TCP/IP协程DPDK等技术内容点击立即学习: 服务器课程C服务器