题目
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?
输出需要删除的字符个数
输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.
对于每组数据,输出一个整数,代表最少需要删除的字符个数。
abcda
2
2
思路
回文串就是正着读和反着读是一样的。题目的意思等价于求字符串和他的逆转字符串的最大公共子序列LCS(DP经典问题之一),出LCS后,用字符串长度减去LCS长度即可。
代码
package sort;
public class LongestCommonSequence {
public static int find(String str) {
int length = str.length() + 1;