您的位置:首页 > 其它

动态规划 最长公共子串问题 记录一下

2017-08-27 21:28 190 查看
给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?

输出需要删除的字符个数。

http://blog.csdn.net/stand1210/article/details/52497934




import java.util.*;

/**
* Created by dd on 2016/8/22.
*/
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (scan.hasNext()) {
String str = scan.next();
show(str);
}
}
public static void show(String str) {
char[] c1 = str.toCharArray();
StringBuffer sb = new StringBuffer(str);
String newStr = sb.reverse().toString();
char[] c2 = newStr.toCharArray();
int n = str.length();
int[][] dp = new int[n+1][n+1];
for(int i=1;i<n+1;i++){
for(int j=1;j<n+1;j++){
if(c1[i-1]==c2[j-1]){
dp[i][j]=dp[i-1][j-1]+1;
}else{
dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);
}
}
}
System.out.println(str.length()-dp

);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: