class Solution{ public: string LongestPalindrome(string s){ if(s.empty()) return ""; string t = "#"; for(char c : s){ t+=c; t+="#"; } int n = t.size(); vector p(n,0); int C =0; int R =0; for(int i=0;i=0 && t[i+p[i]+1] == t[i-p[i]-1]){ p[i]++; } if(i+p[i]>R){ C = i; R = i+p[i]; } } int maxLen = 0; int centerIndex = 0; for(int i =0;imaxLen){ maxLen = p[i]; centerIndex = i; } } int start = (centerIndex-maxLen)/2; return s.substr(start, maxLen); } }