【字符串】Leetcode 最长回文子串

题目讲解

5. 最长回文子串


算法讲解

dp[i][j]表示i~j这一段区间的子串是否是回文

当s[i] == s[j]的时候,此时是有三种情况的:

i==j说明一个字符肯定是回文

i+1 == j也说明一个字符是回文

i+1 < j说明需要判断[i+1, j-1]这一段区间是否是回文

此时我们就可以明白s[i] == s[j]它仅仅判断的是左右两个端点

cpp 复制代码
class Solution {
public:
    string longestPalindrome(string s) {
        //dp[i][j]表示i~j位置的子串是否是回文串
        int n = s.size();
        int len = 1, begin = 0;
        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])
                    dp[i][j] = i + 1 < j ? dp[i+1][j-1] : true;
                if(dp[i][j] && j-i+1 > len)
                {
                    len = j-i+1;
                    begin = i;
                }
            }
        }
        return s.substr(begin, len);
    }
};
相关推荐
努力学算法的蒟蒻2 分钟前
day41(12.22)——leetcode面试经典150
算法·leetcode·面试
liliangcsdn2 分钟前
Python拒绝采样算法优化与微调模拟
人工智能·算法·机器学习
Christo34 分钟前
2024《A Rapid Review of Clustering Algorithms》
人工智能·算法·机器学习·数据挖掘
AndrewHZ6 分钟前
【图像处理基石】图像梯度:核心算法原理与经典应用场景全解析
图像处理·算法·计算机视觉·cv·算子·边缘提取·图像梯度
让学习成为一种生活方式7 分钟前
组蛋白短链酰化修饰--文献精读187
算法
fei_sun11 分钟前
数字图像处理
人工智能·算法·计算机视觉
Tisfy15 分钟前
LeetCode 960.删列造序 III:动态规划(最长递增子序列)
算法·leetcode·动态规划·字符串·题解·逆向思维
多米Domi01117 分钟前
0x3f第十天复习(考研日2)(9.18-12.30,14.00-15.00)
python·算法·leetcode
listhi52021 分钟前
支持向量机多分类解决方案
算法·支持向量机·分类
十三画者22 分钟前
【文献分享】vConTACT3机器学习能够实现可扩展且系统的病毒分类体系的构建
人工智能·算法·机器学习·数据挖掘·数据分析