資料結構——最長對稱子串
阿新 • • 發佈:2018-11-21
題目大意:就是讓你找這個字串裡最長的對稱序列。
題目連結: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; }