原题链接


http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1088


解题思想


/* 采用暴力,划分出每个区间,然后判断,并更新最大值。 显然这种做法,只能应对小数据,大数据的好像是Manacher算法, 现在还不会。 */

代码


#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
string str;
int isHui(string s)
{
    int len = s.length();
    int i = 0;
    int j = len-1;
    int flag = 1;
    while(i<=j)
    {
        if(s.at(i) == s.at(j))
        {
            i++;
            j--;
        }else
        {
            flag = 0;
            break;
        }
    }
    return flag;
}
int main()
{
    cin >> str;
    int maxx = -1;
    string subs;
    int len = str.size();
    for(int i=0; i<len; ++i)
    {
        for(int j=1; j<=len-i; ++j)
        {
            subs = str.substr(i,j);
            if(isHui(subs))
            {
                maxx = max(maxx, j);
            }
        }
    }
    cout << maxx <<endl;
    return 0;
}