构造回文

来源:互联网 发布:3dsmax2014软件许可证 编辑:程序博客网 时间:2024/05/01 18:47
题目:给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?
          输出需要删除的字符个数。
         思路参考链接:点击打开链接



import java.util.*;public class Main{        public static void main(String[] args){                Scanner scan = new Scanner(System.in);                while(scan.hasNext()) {                        String s = scan.nextLine();            //System.out.println(s);            int length = s.length()-lcs(s);                        System.out.println(length);        }         }        public static int lcs(String str){                int len = str.length();                char [] arr1 = str.toCharArray();                char [] arr2 = new String( new StringBuilder(str).reverse()).toCharArray();                int [][] r = new int [len+1][len+1];                for (int k =0;k <len + 1;k++){                        r[k][0] = 0;                        r[0][k] = 0;                    }                 for(int i =0;i<len;i++){                        for(int j = 0;j<len;j++){                                if(arr1[i]==arr2[j])                                        r[i+1][j+1] = r[i][j]+1;                                else{                                        int max = r[i][j];                                        if(max<r[i+1][j])                                                max = r[i+1][j];                                        if(max<r[i][j+1])                                                max  = r[i][j+1];                                        r[i+1][j+1] = max;                }            }        }                     return r[len][len];               }        }

0 0
原创粉丝点击