class Solution { public: string longestPalindrome(string s) { int ti = 0, maxlen = 0, i, t; for (i = 0; s[i]; i++) { t = 1; while (t <= i && s[i + t]) { if (s[i + t] == s[i - t]) t++; else break; } t--; if (2 * t + 1 > maxlen) { ti = i - t; maxlen = 2 * t + 1; } } for (i = 0; s[i]; i++) { t = 1; while (t <= i + 1 && s[i + t]) { if (s[i - t + 1] == s[i + t]) t++; else break; } t--; if (2 * t > maxlen) { ti = i - t + 1; maxlen = 2 * t; } } s[ti + maxlen] = 0; return s.c_str() + ti; } };