前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【LeetCode热题100】【多维动态规划】最长回文子串

【LeetCode热题100】【多维动态规划】最长回文子串

作者头像
叶茂林
发布2024-04-24 08:16:03
780
发布2024-04-24 08:16:03
举报

题目链接:5. 最长回文子串 - 力扣(LeetCode)

给你一个字符串 s,找到 s 中最长的回文子串,如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

如果暴力的话,两层循环找出所有子串,一层循环判断回文,这样重复判断了回文,存在这样的一个事实:如果s[i,j]是回文字符串,那么s[i+1,j-1]也是回文字符串

用一个二维布尔数组dp,dp[i][j]表示字符串s[i,j]是不是回文字符串,取决于s[i]是否等于s[j]并且dp[i+1][j-1]为真或者i和j之间没有或者只有一个字符

二维动态规划数组,由于dp[i][j]需要dp[i+1][j-1],所以需要从左下角开始往右上角遍历

代码语言:javascript
复制
class Solution {
public:
    string longestPalindrome(string s) {
        string ans = "";
        int n = s.size();
        vector<vector<bool> > dp(n, vector<bool>(n));
        for (int i = n - 1; i >= 0; --i)
            for (int j = i; j < n; ++j)
                if (s[i] == s[j] && (j - i <= 2 || dp[i + 1][j - 1])) {
                    dp[i][j] = true;
                    if (ans.size() < j - i + 1)
                        ans = s.substr(i, j - i + 1);
                }
        return ans;
    }
};
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com