给定一个字符串,请你求出其中的最长回文子串的长度。
例如,给定字符串 Is PAT&TAP symmetric?,最长回文子串为 s PAT&TAP s,其长度是 1111。
输入格式 包含一个非空字符串。
输出格式 输出一个整数,表示给定字符串的最长回文子串的长度。
数据范围 给定字符串的长度不超过 10001000。
输入样例:
Is PAT
&TAP symmetric
?
输出样例:
11
#include <iostream>
#include <cstring>
using namespace std
;
int main()
{
string str
;
getline(cin
, str
);
int res
= 0;
for (int i
= 0; i
< str
.size(); i
++ )
{
int l
=i
-1,r
=i
+1;
while(l
>=0&&r
<str
.size()&&(str
[l
]==str
[r
]))l
--,r
++;
res
=max(res
,r
-l
-1);
l
=i
,r
=i
+1;
while(l
>=0&&r
<str
.size()&&(str
[l
]==str
[r
]))l
--,r
++;
res
=max(res
,r
-l
-1);
}
cout
<<res
;
return 0;
}