自学内容网 自学内容网

[算法题]最长回文子串

题目链接: 最长回文子串

使用中心扩展算法进行求解, 即遍历字符串长度, 每次以当前位置为中心向左右扩展, 根据字符串长度的奇偶情况需要不同处理求最大值, 在枚举中心点时, 需要考虑两种遍历方式:

  • 第一种:

        

  • 第二种:

        

题解代码:

class Solution 
{
public:
    //中心扩展算法
    int getLongestPalindrome(string A) 
    {
        int len = 0;
        //枚举每个中心点
        for(int i = 0; i < A.size(); ++i)
        {   
            //奇数
            int left = i - 1;
            int right = i + 1;
            while(left >= 0 && right < A.size() && A[left] == A[right])
            {
                left--;
                right++;
            }
            len = max(len, right - left - 1);

            //偶数
            left = i;
            right = i + 1;
            while(left >= 0 && right < A.size() && A[left] == A[right])
            {
                left--;
                right++;
            }
            len = max(len, right - left - 1);
        }
        return len;
    }
};


原文地址:https://blog.csdn.net/m0_62714628/article/details/140558658

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!