// 判断是否是回文串,枚举法
bool isPalindrome(string s)
{
int n = s.size();
// 只枚举一半就ok.
for (int i = 0; i < n / 2; i++) {
if (str[i] != str[n - i - 1]) {
return false;
}
}
return true;
}
// 最长回文子串,中心扩展法
string longestPalindrome(string s) {
int len = s.size();
int pos = 0;
if (len < 2) {
return s;
}
string ans;
int maxLen = 1;
for (int i = 0; i < len; i++) {
int left = i;
int right = i;
// 以s[i]为中心,向两边扩展
while (left >= 0 && right < len && s[left] == s[right]) {
left--;
right++;
}
if (right - left - 1 > maxLen) {
maxLen = right - left - 1;
pos = left + 1;
}
// 以s[i]、s[i + 1]为中心,向两边扩展
left = i;
right = i + 1;
while (left >= 0 && right < len && s[left] == s[right]) {
left--;
right++;
}
if (right - left - 1 > maxLen) {
maxLen = right - left - 1;
pos = left + 1;
}
}
return s.substr(pos, maxLen);
}