力扣.最长回文子串(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);
    }
};
相关推荐
码农葫芦侠12 分钟前
C++继承中虚函数调用时机问题及解决方案
c++·qt
一只余弦函数15 分钟前
《C++》STL--list容器详解
开发语言·c++·list
一勺-_-16 分钟前
全栈:怎么把IDEA和Maven集成一下?
java·maven·intellij-idea
燕山石头22 分钟前
解决 IntelliJ IDEA Build时 Lombok 不生效问题
java·前端·intellij-idea
Asu520230 分钟前
链表反转中最常用的方法————三指针法
java·数据结构·学习·链表
爱学习的小邓同学40 分钟前
C++ --- stack和queue的使用以及简单实现
c++
cici158741 小时前
linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
java·linux·hadoop
霜羽68921 小时前
【C++篇】模版进阶
开发语言·c++
孫治AllenSun1 小时前
【Mysql】联合索引生效分析案例
java·数据库·mysql
我命由我123451 小时前
Spring Boot 项目问题:Web server failed to start. Port 5566 was already in use.
java·前端·jvm·spring boot·后端·spring·java-ee