Leetcode第五题(最长回文子串)

简介: 这篇文章介绍了解决LeetCode第五题“最长回文子串”问题的一种方法,使用了中心扩展法来寻找给定字符串中的最长回文子串。

题目描述:

给你一个字符串 s,找到 s 中最长的回文子串。

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:

输入:s = "cbbd"
输出:"bb"

当回文串为奇数时, 例如: abcba 这个回文串,当i = 2时,lr两个游标分别向两边扩展,直到l = -1 , r = 5时循环结束. 生成以l + 1r - l - 1的子串

当回文串为偶数时,例如: abba 这个回文串,当i = 1时,lr两个游标分别向两边扩展,直到l = -1 , r = 4时循环结束,生成以l + 1r - l - 1的子串

class Solution {
public:
    string longestPalindrome(string s) {
        string ans = "";
        for(int i = 0;i < s.length();i++){
            //回文串奇数
            int l = i - 1,r = i + 1;
            while(l >= 0 && r < s.length() && s[l] == s[r]) 
                l --,r++;
            if(ans.length() < r - l - 1)
                ans = s.substr(l + 1,r - l - 1);

            //回文串偶数
            l = i,r = i + 1;
            while(l >= 0 && r < s.length() && s[l] == s[r]) 
                l --,r++;
            if(ans.length() < r - l - 1)
                ans = s.substr(l + 1,r - l - 1);
        }
        return ans;
    }
};

substr(子串开始位置,子串长度);

相关文章
|
5月前
|
算法
LeetCode算法题---最长回文子串、N 字形变换(四)
LeetCode算法题---最长回文子串、N 字形变换(四)
38 0
|
2月前
|
Python
【Leetcode刷题Python】5. 最长回文子串
LeetCode 5题 "最长回文子串" 的Python解决方案,使用动态规划算法找出给定字符串中的最长回文子串。
37 3
|
2月前
|
算法
LeetCode第5题最长回文子串
该文章介绍了 LeetCode 第 5 题最长回文子串的解法,通过分析回文子串的特点,使用动态规划的思想,用二维数组记录字符串是否为回文串,从后往前遍历找子串,减少重复判断,最终找到最长回文子串,并总结了解题时通过举例推导找规律的思路。
LeetCode第5题最长回文子串
|
4月前
|
存储 算法 Java
【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)
【经典算法】LeetCode 5: 最长回文子串(Java/C/Python3实现含注释说明,Medium)
41 2
|
5月前
leetcode-5:最长回文子串
leetcode-5:最长回文子串
43 0
|
5月前
leetcode代码记录(最长回文子串
leetcode代码记录(最长回文子串
41 2
|
4月前
dp表,哈希表,力扣5.最长回文子串力扣1745.分割回文串IV力扣132.分割回文串II优先级队列(堆)是什么下面是手动实现小根堆力扣1046.最后一块石头的重量
dp表,哈希表,力扣5.最长回文子串力扣1745.分割回文串IV力扣132.分割回文串II优先级队列(堆)是什么下面是手动实现小根堆力扣1046.最后一块石头的重量
|
5月前
|
索引
力扣---最长回文子串(动态规划)
力扣---最长回文子串(动态规划)
|
5月前
|
存储 算法 Go
LeetCode第五题: 最长回文子串
给定一个字符串 `s`​,找到 `s`​ 中最长的回文子串。你可以假设 `s`​ 的最大长度为 1000。
LeetCode第五题: 最长回文子串
【LeetCode 训练营 3,5】无重复字符的最长子串+最长回文子串
【LeetCode 训练营 3,5】无重复字符的最长子串+最长回文子串
83 1