题解---Leetcode.5. 最长回文子串

开朗的大蒜 2022-01-21 12:57:37

5. 最长回文子串

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

示例 1:

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

示例 2:

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

示例 3:

输入:s = "a"
输出:"a"

示例 4:

输入:s = "ac"
输出:"a"

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母(大写和/或小写)组成

Solution

  • 扫描,从一个中心点扩张
  • 向左向右两个方向扩张
  • 当长度为偶数的时候,从边界两侧[i,j] 即i-1 j+1开始扩张
  • 长度为奇数,从边界i和j+1开始扩张即可
  • 更新区间长度和答案

Language: C++

string longestPalindrome(string s) {
        string res; //临时存储
        int l, r; //左右边界
        for(int i = 0; i < s.size(); i++){
            l = i - 1, r = i + 1; //长度为偶数时候
            while(l >= 0 && r < s.size() && s[l] == s[r]) l--, r++;//扩张区间
            if(r - l - 1 > res.size()) res = s.substr(l + 1, (r - l - 1)); //更新答案
            l = i, r = i + 1; //长度为奇数时候
            while(l >= 0 && r < s.size() && s[l] == s[r]) l--, r++; //扩张区间
            if(r - l - 1 > res.size()) res = s.substr(l + 1, (r - l - 1));//更新答案
        }
        return res;返回答案
    }
...全文
50 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,633

社区成员

发帖
与我相关
我的任务
社区描述
欢迎大家来到抱团内卷学习社区,在这里大家可以分享自己的学习笔记,求职心得,一起记录彼此的成长历程。社区群号:94108843,WX公众号:【兴趣使然的草帽路飞】
社区管理员
  • 路  飞
  • 一百个Chocolate
  • 灰小猿
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

最怕你一生碌碌无为,还安慰自己平凡可贵!

努力提高自己的知识储备,助力每一位冲刺大厂的小伙伴!

祝大家前程似锦,offer连连!

注意:每个月活跃积分最高的小伙伴,可以获得社区管理员权限哦!

试试用AI创作助手写篇文章吧