最长回文子串

来源:互联网 发布:淘宝联盟提现时间 编辑:程序博客网 时间:2024/06/15 13:36

题目描述

对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。

给定字符串A以及它的长度n,请返回最长回文子串的长度。

测试样例:
"abc1234321ab",12
返回:7
import java.util.*;public class Palindrome {  public int getLongestPalindrome(String A, int n) {// write code here//第i个字符到第j个字符是否为回文串      boolean[][] dp = new boolean[n][n];      int max = 0;      //字符串首位字母长度差(d=j-i)      for(int d=0;d<n;d++){          //字符串起始位置          for(int i=0;i<n-d;i++){              //子串结束位置              int j = i+d;              //如果字符串i到j的首尾相等,再根据字符串i+1到j-1来确定              if(A.charAt(i)==A.charAt(j)){                  if(d==0||d==1){                      dp[i][j]=true;                  }else{                      dp[i][j]=dp[i+1][j-1];                  }                  if(dp[i][j]){                      //更新最大长度                      max=Math.max(max,d+1);                  }              }          }      }      return max;      }}


原创粉丝点击