pat 1040. Longest Symmetric String (25)

1040. Longest Symmetric String (25)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

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
解:两重循环,第一重从第一个字符开始,第二重从最后一个开始,本来想优化下的,发现那就是我一直第6个测试样例不过的原因,当时改过来提交显示全部正确的时候简直想骂人,好的吧,思路很简单,常规思路,详情看代码。

代码:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
    string s;
    getline(cin,s);
    int len=s.length(),maxi=1;
    for(int i=0;i<len;i++)
    {
        for(int j=len-1;j>i;j--)
        {
            if(s[i]==s[j])
            {
                int t1=i,t2=j;
                do
                {
                    t1++;
                    t2--;
                } while(s[t1]==s[t2]&&t1<t2&&t1<j&&t2>i);
                if((t1==t2||t1-t2==1)&&j-i+1>maxi)
                {
                    maxi=j-i+1;
                }
                continue;
            }
        }
    }
    printf("%d
",maxi);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/Tobyuyu/p/4965288.html