1. 程式人生 > >資料結構——最長對稱子串

資料結構——最長對稱子串

題目大意:就是讓你找這個字串裡最長的對稱序列。

題目連結:https://pintia.cn/problem-sets/1052335451183816704/problems/1052335487275802632#p-1

 

思路:列舉每一個對稱中心,判斷時候對稱,由於字串長度僅僅為1000,所以不會超時,比較簡單的模擬題。

唯一注意的是這裡的對稱方式有兩種,一種是aacaa,一種是aaccaa。

 

下面給出AC程式碼:

#include <bits/stdc++.h>

using namespace std;
const int maxn=2000;
const int INF=0x3f3f3f3f;

char s[maxn];

int main()
{
    int len=0;
    char ch;
    while(scanf("%c",&ch)!=EOF)
    {
        s[len++]=ch;
    }

    int p1=1,p2=0;
    for(int i=1;i<len-1;i++)//判斷aacaa形式的對稱
    {
        int mid=i+1,t=1;
        for(int j=i-1;j>=0;j--)
        {
            if(s[j]==s[mid++]) t+=2;
            else break;
        }
        p1=max(p1,t);
    }

    for(int i=1;i<len-1;i++)//判斷aaccaa形式的對稱
    {
        int mid=i+1,t=0;
        for(int j=i;j>=0;j--)
        {
            if(s[j]==s[mid++]) t+=2;
            else break;
        }
        p2=max(p2,t);
    }

    printf("%d",max(p2,p1));
    return 0;
}