题目描述
对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
给定字符串A以及它的长度n,请返回最长回文子串的长度。
示例1
输入
"abc1234321ab",12
返回值
7
1、用arr二维数组记录之前的每一个结果,如果是汇文子串则为1,否则为0
class Solution { public: int getLongestPalindrome(string A, int n) { if(n<=1) { return n; } int arr[n][n]; for(int i=0;i<n;++i) { arr[i][i]=1; } int Count=0; for(int i=0;i<n;++i) { for(int j=0;j<i;++j) { if(A[i] !=A[j]) { arr[i][j]=0; continue; } if(i-j==1) { arr[i][j]=1; } else { arr[i][j]=arr[i-1][j+1]; } if(arr[i][j]==1) { Count=Count>(i-j+1)?Count:(i-j+1); } } } return Count; } };