题解 | #最长回文子串#

最长回文子串(注:非子序列),考虑使用中心扩展法,时间复杂度O(n²),空间复杂度O(1)。

    int expand(string& A, int left, int right){
        int n = A.length();
	  	// 考虑边界处理
        while(left>=0 && right<n && A[left]==A[right]){
            --left;
            ++right;
        }
        return right-left-1;
    }   

    int getLongestPalindrome(string A) {
        int res = 0;
        int n = A.length();
        for(int i=0; i<n; ++i){
		    // 以每个字符为中心点进行扩展
            res = max(res, expand(A, i, i));
		  	// 以每个字符及其右侧字符为中心进行扩展
            res = max(res, expand(A, i, i+1));
        }
        return res;
    }

全部评论
马拉车:就这?
点赞 回复 分享
发布于 2023-05-14 20:48 北京

相关推荐

投递华为等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
2
分享
牛客网
牛客企业服务