Palindrome_Edit_Distance

class Solution {
  public static void main(String[] args) {
        int res = longestPalindrome("aaeaaac");
        System.out.println(res);
    }



     //自己方法
     public static int longestPalindrome(String s) {
         int n = s.length();
         int [][] dp = new int[n][n];
         String result=null;


        //  初始化 
         for(int i = 0;i<n-1;i++){
            dp[i][i+1] = s.charAt(i)==s.charAt(i+1)?0:1;
         }


       for(int j = 0; j < n; j++){
             for(int i = j;i >= 0 ;i--){    
                 if (s.charAt(i)==s.charAt(j)){
                     if(j - i > 2){
                        dp[i][j] = dp[i+1][j-1];
                     }
                 }else{    
                     if(j - i >= 2){
                             dp[i][j] = Math.min(dp[i+1][j], dp[i][j-1]) + 1;//删除或插入
                             dp[i][j] = Math.min(dp[i][j], dp[i+1][j-1] + 1);//替换
                     }
                 }
             }
         }
         return dp[0][n-1];

    }
}

results matching ""

    No results matching ""