[力扣05]最长回文子串是什么

描述

此教程使用C++版本编写代码,如需其他版本,请自行修改,并在力扣网站中测试!

题目描述

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

示例1:

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

示例2:

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

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母组成

C++题目源码:

class Solution {
public:
    string longestPalindrome(string s)
     {
         if(s.length()==0)
         {
             return "";
         }
         int size=s.length();
         int left=0;
         int right=0;
         int len=1;
         int maxPos=0;
         int maxLen=0;
         for(int i=0;i<size;i++)
         {
            left=i-1;
            right=i+1;
            //左边
            while(left>=0&&s[left]==s[i])
            {
                len++;
                left--;                
            }
            //右边
            while(right<size&&s[right]==s[i])
            {
               len++;
               right++;     
            }
            //左边和右边对称
            while(left>=0&&right<size&&s[left]==s[right])
            {
                len+=2;
                left--;
                right++;
            }
            if(len>maxLen)
            {
                maxLen=len;
                maxPos=left;
            }
            len=1;
         }
         return s.substr(maxPos+1,maxLen);
    }
};
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分