write LongestPalindromeSubstring with the linear Manacher algorith