xinyu04

导航

< 2025年3月 >
23 24 25 26 27 28 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 26 27 28 29
30 31 1 2 3 4 5

统计

Leetcode 5 Longest Palindromic Substring DP

Given a string s, return the longest palindromic substring in s.

Solution

dp[i][j] 表示字串 s[i,...,j] 是否为回文串。初始化时,每个单独的字符本身就是回文串;长度为2的串只要首尾相同,也是回文串;长度 3 时,只有满足:

dp[i+1][j1] && s[i]=s[j]

此时 dp[i][j] 也就是回文串。因此循环内侧的 i 时,应倒序遍历

点击查看代码
class Solution {
private:
bool dp[1003][1003];
int MAX = -1;
int ansl, ansr;
public:
string longestPalindrome(string s) {
int n = s.length();
for(int i=0;i<n;i++){
dp[i][i] = true;
MAX = 1; ansl = i;
}
for(int j=1;j<n;j++){
for(int i=j-1;i>=0;i--){
if(i+1==j){
if(s[i]==s[j])dp[i][j] = true;
else dp[i][j] = false;
}
else{
if(s[i]==s[j] && dp[i+1][j-1])dp[i][j] = true;
else dp[i][j] = false;
}
if(dp[i][j]){
if(MAX<j-i+1)MAX = j-i+1, ansl = i, ansr = j;
}
}
}
return s.substr(ansl, MAX);
}
};

posted on   Blackzxy  阅读(8)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示