对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?
,最长对称子串为s PAT&TAP s
,于是你应该输出11。
输入格式:
输入在一行中给出长度不超过1000的非空字符串。
输出格式:
在一行中输出最长对称子串的长度。
输入样例:
Is PAT&TAP symmetric?
输出样例:
11
代码如下:
#include<bits/stdc++.h>
using namespace std;
vector<char>s;
bool Judge(int a,int b)
{
for (int i = 1; i < b - a; i++)
{
if (s[a + i] != s[b - i])
return false;
}
return true;
}
int main()
{
char c;
while ((c = getchar()) != '\n')
s.push_back(c);
int max = 0;
for (int i = 0; i < s.size(); i++)
{
for (int j = s.size() - 1; j >= i && j - i + 1 > max; j--)
{
if (s[i] == s[j] && Judge(i, j))
max = Judge(i, j) ? ((max >= j - i + 1) ? max : j - i + 1 ): max;
}
}
cout << max;
return 0;
}