class Solution {
public:
string longestPalindrome(string s) { // babad
int i = 0, len = s.size();
int left, right;
int size = 0;
int res = 0;
string resstr = s.substr(0, 1);
for (i = 0; i < len; i++) {
if (i + 1 == len) break;
if (s[i] == s[i+1]) { // c == c
size = 0;
left = i;
right = i + 1; //
if (right >= len) break; //
while (true) {
if (s[left] == s[right]) { // c == c
size+=2;
if (res < size) {
resstr = s.substr(left, right - left + 1); // resstr = cc
res = size;
}
} else {
break; //
}
left--;
right++;
if (left < 0 || right >= len) {
break;
}
continue;
}
}
if ((i - 1) >= 0 && (i + 1) < len && s[i -1] == s[i + 1]) { // b != a | b == b
size = 1;
left = i - 1;
right = i + 1; //
if (left < 0 || right >= len) break; //
while (true) {
if (s[left] == s[right]) { // i = 1 c = c
size+=2; // size = 1
if (res < size) { // 0 < 1
resstr = s.substr(left, right - left + 1); // resstr = bab
res = size;
}
} else {
break;
}
left--;
right++;
if (left < 0 || right >= len) {
break;
}
continue;
}
}
}
return resstr;
}
};