5. 最长回文子串


1.题意

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

示例 1:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring

2.思路

最长回文子串长用的方法就是马拉车或者暴力剪枝,马拉车模板没带就不写了,暴力剪枝跑一波,很快啊,就过啦

代码

class Solution {
public:
    string longestPalindrome(string s) {
        int n = s.size(), re = 0;
        string t;
        for(int i = 0; i < n; i++)
            for(int j = i; j < n; j++){
                int a = i, b = j, flag = 1;
                if(j - i + 1 < re) continue;
                while(b >= a){
                    if(s[b] != s[a]){
                        flag = 0;
                        break;
                    }
                    a++, b--;
                }
                if(flag && re < j - i + 1){
                t = s.substr(i, j - i + 1), re = j - i + 1;
                // cout << i << " " << j <<endl;
                } 
            }
        return t;
    }
};

文章作者: 田健
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 田健 !
评论