比较基本的解法:
回文为单数,例如aba;
回文为偶数,例如abba;
分这两个情况,对每个字符为中心进行判断
代码如下:
#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
string s;
getline(cin, s);
int len = 0;
for (int i = 0; i < s.size(); i++){
int m = 0, n = 0, len1 = 0, len2 = 0;
while(i - n >= 0 && i + n < s.size() && s[i - n] == s[i + n]){ //单数
len1 = 2 * n + 1;
n++;
}
if (len1 > len) len = len1;
while(i + 1 < s.size() && s[i] == s[i + 1] && i - m >= 0 && i + m + 1 < s.size() && s[i - m] == s[i + 1 + m]){ //偶数
len2 = 2 * m + 2;
m++;
}
if (len2 > len) len = len2;
}
printf("%d\n", len);
return 0;
}