1040. Longest Symmetric String (25)

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.

Input Specification:

Each input file contains one test case which gives a non-empty string of length no more than 1000.

Output Specification:

For each test case, simply print the maximum length in a line.

Sample Input:
Is PAT&TAP symmetric?
Sample Output:
11



代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
char s[1001];
int len,c = 1;
int counts(int a,int b)
{
    int i;
    for(i = 0;a - i >= 0 && b + i < len;i ++)
    {
        if(s[a - i] != s[b + i])break;
    }
    return i * 2;
}
int main()
{
    gets(s);
    len = strlen(s);
    for(int i = 0;i < len;i ++)
    {
        if(i && s[i] == s[i - 1])
        {
            c = max(c,counts(i - 1,i));

        }
        if(i && i + 1 < len && s[i - 1] == s[i + 1])
        {
            c = max(c,counts(i - 1,i + 1) + 1);
        }
    }
    cout<<c;
}
原文地址:https://www.cnblogs.com/8023spz/p/8037458.html