题目描述
Given a string, you are supposed to output the length of the longest symmetric sub-string. For example, given Is PAT&TAP symmetric?, the longest symmetric sub-string is s PAT&TAP s, hence you must output 11.
输入
Each input file contains one test case which gives a non-empty string of length no more than 1000.
输出
For each test case, simply print the maximum length in a line.
思路
从头开始遍历,对于每一个字符,从尾部开始遍历,若此时他们相等,则判断是否满足条件,存取长度即可
代码
#include<iostream>
#include<cstdio>
#include<stdlib.h>
#include<string>
#include<string.h>
using namespace std;
char str[10000] = { 0 };
int num[10000] = { 0 };
bool pan(int s, int e)
{
while (s < e)
{
if (str[s] != str[e])
{
return false;
}
s++;
e--;
}
return true;
}
int main()
{
cin.getline(str, 10000);
int n = strlen(str);
for (int i = 0; i < n; i++)
{
for (int j = n - 1; j > i; j--)
{
if (str[i] == str[j])
{
if (pan(i, j))
{
num[i] = j - i + 1;
break;
}
}
}
}
int mmax = 1;
for (int i = 0; i < n; i++)
{
if (num[i] > mmax)
{
mmax = num[i];
}
}
printf("%d\n", mmax);
}