最长回文子串
最长回文子串
https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af?tpId=117&tab=answerKey
题目描述
对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。
给定字符串A以及它的长度n,请返回最长回文子串的长度。
示例1
输入
"abc1234321ab",12
返回值
7
思路
1.转移方程容易想,但两个指针的移动方向容易出错。
2.应该A指针向右走,B指针从A开始向左走,目的是B指针扫过的范围A已经走过,才能执行动态规划。
code
import java.util.*;
public class Solution {
public int getLongestPalindrome(String A, int n) {
boolean [][]dp = new boolean[n+1][n+1];
for(int i=0;i<n;i++)dp[i][i]=true;
char []chs = A.toCharArray();
int max = 0;
for(int i=0;i<n;i++){
for(int j=i;j>=0;j--){
if(j+1==i){
dp[j][i] = chs[j]==chs[i];
if(i-j+1>max)max=i-j+1;
}else if(j+1<i){
if(dp[j+1][i-1]==true && chs[j]==chs[i]){
dp[j][i] = true;
if(i-j+1>max)max=i-j+1;
}
else dp[j][i]=false;
}
}
}
return max;
}
}
三奇智元机器人科技有限公司公司福利 50人发布