最长对称子串的长度有可能是奇数也有可能是偶数,因此在遍历时要同时考虑这两种情况。
#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;
}