Python學習————HTTP協議
阿新 • • 發佈:2020-09-11
對於一個字串,請設計一個高效演算法,計算其中最長迴文子串的長度。
給定字串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; } };