最长对称子串的长度有可能是奇数也有可能是偶数,因此在遍历时要同时考虑这两种情况。
#include<bits/stdc++.h>
using namespace std;
int main() {
string s;
getline(cin,s);
int n = s.size();
int res = 0; // 初始化为0,因为空字符串也是对称的
for (int i = 0; i < n; i++) {
int left1 = i;
int right1 = i;
// 注意边界条件的顺序
while (left1 >= 0 && right1 < n && s[left1] == s[right1]) {
left1--;
right1++;
}
// 更新最大对称串长度
res = max(res, right1 - left1 - 1);
int left2 = i;
int right2 = i+1;
// 注意边界条件的顺序
while (left2 >= 0 && right2 < n && s[left2] == s[right2]) {
left2--;
right2++;
}
// 更新最大对称串长度
res = max(res, right2 - left2 - 1);
}
cout << res;
return 0;
}