力扣.最长回文子串(c++)

简单记录学习~

5. 最长回文子串

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

示例 1:

复制代码
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

复制代码
输入:s = "cbbd"
输出:"bb"

O(n^2)

cpp 复制代码
class Solution {
public:
    string longestPalindrome(string s) {
        int start = 0, maxLen = 1;
        int n = s.size();

        auto expandAroundCenter = [&](int left, int right) {
            while (left >= 0 && right < n && s[left] == s[right]) {
                --left;
                ++right;
            }
            return make_pair(left + 1, right - left - 1); // 起始位置,长度
        };

        for (int i = 0; i < n; ++i) {
            auto [l1, len1] = expandAroundCenter(i, i);     // 奇数回文
            auto [l2, len2] = expandAroundCenter(i, i + 1); // 偶数回文

            if (len1 > maxLen) {
                start = l1;
                maxLen = len1;
            }
            if (len2 > maxLen) {
                start = l2;
                maxLen = len2;
            }
        }
        return s.substr(start, maxLen);
    }
};
相关推荐
小小怪KO18 小时前
分布式锁解决集群下一人一单超卖问题
java·分布式·tomcat·后端开发·实习·黑马点评
UrSpecial18 小时前
Linux线程
linux·开发语言·c++
郝学胜-神的一滴18 小时前
深入浅出 C++20:新特性与实践
开发语言·c++·程序人生·算法·c++20
智码看视界18 小时前
老梁聊全栈系列:(阶段一)从单体到云原生的演进脉络
java·云原生·c5全栈
汉克老师18 小时前
第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(2 、寻宝石)
c++·蓝桥杯·蓝桥杯c++·c++蓝桥杯·蓝桥杯选拔赛
大锦终18 小时前
【Linux】进程间通信
linux·运维·服务器·c++
闪电麦坤9518 小时前
C/C++项目练习:命令行记账本
开发语言·c++
Adorable老犀牛18 小时前
阿里云-基于通义灵码实现高效 AI 编码 | 8 | 上手实操:LeetCode学习宝典,通义灵码赋能算法高效突破
学习·算法·leetcode
望获linux18 小时前
【实时Linux实战系列】规避缺页中断:mlock/hugetlb 与页面预热
java·linux·服务器·数据库·chrome·算法
菜就多练,以前是以前,现在是现在18 小时前
Codeforces Round 1048 (Div. 2)
数据结构·c++·算法