力扣.最长回文子串(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);
    }
};
相关推荐
百锦再18 分钟前
详细解析 .NET 依赖注入的三种生命周期模式
java·开发语言·.net·di·注入·模式·依赖
程序员的世界你不懂1 小时前
基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(2)对框架加入业务逻辑层
java·selenium·maven
有没有没有重复的名字2 小时前
线程安全的单例模式与读者写者问题
java·开发语言·单例模式
十秒耿直拆包选手2 小时前
Qt:主窗体(QMainwindow)初始化注意事项
c++·qt
程序员的世界你不懂3 小时前
基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(4)集成Allure报表
java·selenium·maven
isNotNullX3 小时前
数据中台架构解析:湖仓一体的实战设计
java·大数据·数据库·架构·spark
皮皮林5513 小时前
“RPC好,还是RESTful好?”,这个问题不简单
java
Xiaouuuuua3 小时前
一个简单的脚本,让pdf开启夜间模式
java·前端·pdf
霖003 小时前
C++学习笔记三
运维·开发语言·c++·笔记·学习·fpga开发
mit6.8244 小时前
[shad-PS4] Vulkan渲染器 | 着色器_重新编译器 | SPIR-V 格式
c++·游戏引擎·ps4