#include <iostream> using namespace std; string s; int fun(int l,int r) { while (l >= 0 && r < s.size()&&s[l]==s[r] ) { l--,r++; } return r-l-1; } int main() { cin >> s; int len = s.length(); int res = -1; for(int i = 0;i<len-1;i++){ int res1 = fun(i, i); int res2 = fun(i,i+1); res = max(max(res1,res2),res); } cout << res << '\n'; return 0; } // 64 位输出请用 printf("%lld")
因为不知道回文字符串的长度,所以从(当前位置,当前位置),和从(当前位置,当前位置加1)开始找,模拟找出最大长度即可。