题目
对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
给定字符串A以及它的长度n,请返回最长回文子串的长度。
示例1
输入:
输出:
思路
分析
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import java.util.*;
public class Solution { public int getLongestPalindrome(String A, int n) { boolean[][] dp = new boolean[n][n]; String ans = ""; for(int l = 0; l < n; l++){ for(int i = 0; i + l < n; ++i){ int j = i + l; if(l == 0){ dp[i][j] = true; }else if(l == 1){ dp[i][j] = (A.charAt(i) == A.charAt(j)); }else{ dp[i][j] = (dp[i+1][j-1] && A.charAt(i) == A.charAt(j)); } if(dp[i][j] && l + 1 > ans.length()){ ans = A.substring(i,i+l+1); } } } return ans.length(); } }
|