力扣.最长回文子串(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);
    }
};
相关推荐
wespaul1 分钟前
VeapAI 自然语言操作实战|第 04 篇:系统数据加工——把系统自身的元数据吃成知识
java·大数据·运维·数据库·人工智能
幼儿园蛋小黑4 分钟前
SPI 子系统:从原理到实践
java·前端·数据库
浅念-5 分钟前
动态规划:线性DP——多状态DP与子数组专题笔记
c++·笔记·算法·leetcode·职场和发展·动态规划·力扣
yangmu320330 分钟前
Unity 开发过程与底层原理
java·开发语言
lexiangqicheng33 分钟前
自定义表单跨端共用机制-PC设计APP渲染
java·前端·javascript
zhikouai36 分钟前
AI辅助逆向工程链路:从二进制接入到等价性校验
java·linux·前端
随性而行3601 小时前
企业微信API接口开发实战:如何实现消息回调接收与业务事件处理?
java·前端·python·微信·机器人·企业微信
美味蛋炒饭.1 小时前
java八股面试(3)
java·开发语言·面试
IT研究室1 小时前
最新计算机毕业设计选题推荐-基于spring boot的美食配送平台-网站-文档指导-Java-springboot
java·spring boot·课程设计
霸道流氓气质1 小时前
Saga模式入门与实战:编排与协同模式、补偿设计原则与Java生产级实现
java·开发语言