题解 | #最长回文子串#

最长回文子串

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

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param A string字符串
     * @return int整型
     */
    int getLongestPalindrome(string A) {
        // write code here
        // int n = A.size();
        // if ( n == 0) {
        //     return 0;
        // }
        // int res = 0;
        // vector<vector<int>> dp(n, vector<int>(n, 0));
        // for (int i = n - 1; i >= 0; i--) {
        //     for (int j = i ; j < n; j++) {
        //         if (A[i] == A[j]) {
        //             if (j - i <= 1) {
        //                 dp[i][j] = 1;
        //             } else {
        //                 dp[i][j] = dp[i + 1][j - 1];
        //             }
        //         }
        //         if (dp[i][j] == 1) {
        //             res = max(res, j - i + 1);
        //         }
        //     }
        // }
        // return res;
        //使用双指针求法
        // string res="";
        int res = 0;
        for(int i = 0; i< A.size(); i++){
            string str1 = expand(i,i,A);
            string str2 = expand(i,i+1,A);
            res = (res > str1.size()?res : str1.size()) > str2.size()?(res > str1.size()?res : str1.size()):str2.size();
        }
        return res;
    }

    string expand(int left, int right, string str){
        for(;left>=0 && right < str.size() && str[left] == str[right];){
            left--;
            right++;
        }
        return string(str.begin()+left+1,str.begin()+right);
    }
};

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务