1. 程式人生 > 實用技巧 >Python學習————HTTP協議

Python學習————HTTP協議

對於一個字串,請設計一個高效演算法,計算其中最長迴文子串的長度。
給定字串A以及它的長度n,請返回最長迴文子串的長度。
測試樣例:
"abc1234321ab",12
返回:7

思路:Manacher 演算法
https://www.cxyxiaowu.com/2869.html


class Palindrome {
public:
    int getLongestPalindrome(string A, int n) {
        vector<char> new_arr;
        
        new_arr.push_back('#');
        for(int i=0;i<A.length();i++){
            new_arr.push_back(A[i]);
            new_arr.push_back('#');
        }
        new_arr.push_back('#');

        int max_len = 0;
        for(int i=0;i<new_arr.size();i++){
            int center_loc = i;
            int left_loc = center_loc-1;
            int right_loc = center_loc + 1;
            int curr_len = 0;
            while(left_loc>=0 && right_loc<new_arr.size()){
                if(new_arr[left_loc]==new_arr[right_loc]){
                    curr_len++;
                    left_loc--;
                    right_loc++;
                }else{
                    break;
                }
            }

            max_len = max(max_len,curr_len);
        }

        return max_len;
    }
};