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

来源:互联网 发布:ps免费版中文版mac 编辑:程序博客网 时间:2024/05/29 10:12
给定一个字符串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[n][n]);    }}

原创粉丝点击