中心扩展法:(考虑奇数长、偶数长) string LongestPalindrome(string s) { int n = s.size(); if (n <= 1) return s; int len = 1; string res = s.substr(0, 1); for (int i = 1; i <= n-2; i++) { int j = 1; for (; (i-j) >= 0 && (i+j) <= n-1; j++) if (s[i-j] != s[i+j]) break; if (2*j - 1 > len) { len = 2*j - 1; res = s.substr(i-j+1, 2*i-1); } } for (int i = 0; i <= n-2; i++) { if (s[i] != s[i+1]) continue; int j = 1; for (; (i-j) >= 0 && (i+1+j) <= n-1; j++) if (s[i-j] != s[i+1+j]) break; if (2*j > len) { len = 2*j; res = s.substr(i-j+1, 2*j); } } return res; }