题解 | #最长回文子串#

最长回文子串

https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param A string字符串 
     * @return int整型
     */
    int getLongestPalindrome(const string& A) {
        // write code here

        int maxlen = 1;
        for(int i=0;i<2*A.size()-1;i++){//i遍历元素以及元素之间的间隔
            int j = 0,leftIndex,rightIndex;
            while(true){
                bool startAtInterval = true;
                if(!i||i%2){
                    startAtInterval = false;
                }
                leftIndex = (i+startAtInterval)/2 - 1 - j;
                rightIndex = (i+startAtInterval)/2 + !startAtInterval + j;
                if(leftIndex>=0&&rightIndex<A.size()&&A[leftIndex]==A[rightIndex]){
                    j++;
                    int len = 2*j + !startAtInterval;
                    if(len > maxlen){
                        maxlen = len;
                    }
                }else{
                    break;
                }
            }
        }

        return maxlen;

    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务