L2-008 最長對稱子串 (25 分) (模擬)


鏈接:https://pintia.cn/problem-sets/994805046380707840/problems/994805067704549376

 


 

 

題目:

對給定的字符串,本題要求你輸出最長對稱子串的長度。例如,給定Is PAT&TAP symmetric?,最長對稱子串為s PAT&TAP s,於是你應該輸出11。

輸入格式:

輸入在一行中給出長度不超過1000的非空字符串。

輸出格式:

在一行中輸出最長對稱子串的長度。

輸入樣例:

Is PAT&TAP symmetric? 

輸出樣例:

11

思路:
遍歷字符串中的每個位置 在每個位置枚舉長度判斷此長度能否構成一個回文串 需要對長度的奇偶性分類討論

代碼:
#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <string> #include <cstring> #include <algorithm>

using namespace std; typedef long long ll; typedef unsigned long long ull; const int inf=0x3f3f3f3f; string s; int main(){ getline(cin,s); int len=s.length(); int ans=0; for(int i=0;i<len;i++){ for(int j=0;i-j>=0 && i+j<len;j++){ if(s[i-j]!=s[i+j]) break; ans=max(ans,j*2+1); } for(int j=0;i-j>=0 && i+j+1<len;j++){ if(s[i-j]!=s[i+j+1]) break; ans=max(ans,j*2+2); } } printf("%d\n",ans); return 0; }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM