最长回文串--动态规划
最长回文串–动态规划
参考:https://writings.sh/post/algorithm-longest-palindromic-substring
class Solution {
public String longestPalindrome(String s) {
int len = s.length();
//为了操作方便,将string变char[]
char[] str = s.toCharArray();
//创建数组,数组下标为回文串结束,数组内容为回文串开始
//如: dp[j] = i; j为回文串结束下标,i为回文串开始下标
int[] dp = new int[len];
dp[0] = 0;
//记录最长回文串的dp下标
int max_index = 0;
for(int j = 1 ;j < len;j++){
//两种情况
//情况一:以j结束的回文串刚好是以j-1结束回味串的扩展,即使dp[j] = dp[j-1] -1
if(dp[j-1]>0 && str[j]==str[dp[j-1]-1])
dp[j] = dp[j-1] - 1;
//情况二:不符合扩展,就要找以j结尾的回文串
else{
int right = j;
int left = dp[j-1];
int start = left;
while(left < right ){
if(str[left] != str[right]){
start = left +1;
right = j;
}else{
right--;
}
left++;
}
dp[j] = start;
}
int max_len = max_index-dp[max_index]+1;
if(max_len < j-dp[j]+1)
max_index = j;
}
return s.substring(dp[max_index],max_index+1);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)