zoukankan      html  css  js  c++  java
  • [编程题] 构造回文

    给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?
    输出需要删除的字符个数。

    输入描述:

    输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.



    输出描述:

    对于每组数据,输出一个整数,代表最少需要删除的字符个数。


    输入例子:
    abcda
    google
    

     

    输出例子:
    2
    2
    思想:回文串的特点是,逆序输出和正序输出是一样的。所以这道题可以从这方面来考虑。如果将此字符串逆序输出,那么两个字符串的最长公共子序列将是最长的回文字符串,那么剩余的值将是要删除的字符个数。
     1 package fromniuke;
     2 
     3 import java.util.Scanner;
     4 
     5 public class Test28 {
     6 
     7         public static void main(String[] args){
     8             Scanner scan = new Scanner(System.in);
     9             while(scan.hasNext()){
    10                 String str = scan.nextLine();
    11                 System.out.println(str.length()-getResult(str));
    12             }
    13         }
    14         public static int getResult(String str){
    15             StringBuilder sb  = new StringBuilder(str);
    16             String newStr = sb.reverse().toString();
    17             char[] c1 = str.toCharArray();
    18             char[] c2 = newStr.toCharArray();
    19             int n = str.length();
    20             int[][] dp = new int[n+1][n+1];
    21             for(int i=1;i<n+1;i++){
    22                 for(int j=1;j<n+1;j++){
    23                     if(c1[i-1]==c2[j-1]){ //此处应该减1.
    24                         dp[i][j]=Math.max(Math.max(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1]+1);
    25                     }else{
    26                         dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);
    27                     }
    28                 }
    29             }
    30             return dp[n][n];
    31         }
    32 }
    
    
    
    
    
    Jumping from failure to failure with undiminished enthusiasm is the big secret to success.
  • 相关阅读:
    深度优先搜索
    哈希算法
    双指针问题
    基本概念
    Ionic JPush极光推送二
    一条sql获取每个类别最新的一条记录
    Ionic App 更新插件cordova-plugin-app-version
    Ionic跳转到外网地址
    Ionic cordova-plugin-splashscreen
    Web API 上传下载文件
  • 原文地址:https://www.cnblogs.com/chongerlishan/p/5970308.html
Copyright © 2011-2022 走看看