substr用法: s.substr(i,j)表示从下标为i的位置开始截取j位。
compare用法:s.compare(s1) 直接用s与s1比较 大于为1 小于为-1 等于为0
s.compare(i, j, s1, l, r) 表示从s[i]开始截取长度为j的字符串与 s1[l]开始截取长度为r的字符串比较
#include<iostream>
#include<cstring>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
int maxL = 1;
int main() {
string s;
getline(cin, s);
int len = s.length();
for(int i=1; i<len-1; i++){//以i为对称点
// cout << i << endl;
for(int j=1; j<=min(len-i, i); j++){//长度
string l = s.substr(i-j, j);
string r = s.substr(i+1, j);
string r2 = s.substr(i, j);
string rl(l.rbegin(), l.rend());
if(rl.compare(r) == 0){//存在回文
maxL = max(maxL, j*2+1);
}else if(rl.compare(r2) == 0){
maxL = max(maxL, 2*j);
}
/* string l = s.substr(i-j, j);
string rl(l.rbegin(), l.rend());
if(rl.compare(0, rl.length(), s, i+1, j) == 0){//存在回文
maxL = max(maxL, j*2+1);
}else if(rl.compare(0, rl.length(),s, i, j) == 0){
maxL = max(maxL, 2*j);
}*/
}
}
cout << maxL << endl;
return 0;
}
/*
111111111
*/