牛客网编程题

来源:互联网 发布:阿里云ecs搭建windows 编辑:程序博客网 时间:2024/06/19 03:02

1.找出最大回文串的长度

#include<iostream>#include<string>using namespace std;int main(){    string s;    cin >> s;    int startk = -1;    int endk = -1;    int number=0;    int maxnumber = -1;    for (size_t i = 0; i < s.length() - 1; i++)    {        if (s[i] == s[i + 1] && startk < 0)        {            startk = i;        }        else if ((s[i] != s[i + 1]||(i+1)==s.length()-1) && startk >= 0)        {            if ((i + 1) == s.length() - 1)               endk = i + 1;            else              endk = i;        }        else if ((i - 1) >= 0&&startk<0)        {            if (s[i - 1] == s[i + 1])            {                startk = i - 1;                endk = i + 1;            }        }        if (endk != -1&&startk!=-1)        {            number = endk - startk + 1;            while (startk >0 && endk < s.length()-1)            {                startk--;                endk++;                if (s[startk] == s[endk])                    number += 2;                else                    break;            }            if (number > maxnumber)            {                maxnumber = number;            }            number = 0;            startk = -1;            endk = -1;        }    }    cout << maxnumber;    return 0;}
原创粉丝点击