nyoj 132 最長回文子串

2021-07-11 11:38:51 字數 1157 閱讀 9867

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:4 描述

輸入乙個字串,求出其中最長的回文子串。子串的含義是:在原串連續出現的字串片段。回文的含義是:正著看和倒著看是相同的,如abba和abbebba。在判斷是要求忽略所有的標點和空格,且忽略大小寫,但輸出時按原樣輸出(首尾不要輸出多餘的字串)。輸入字串長度大於等於1小於等於5000,且單獨佔一行(如果有多組答案,輸出第一組)。

輸入輸入乙個測試資料n(1<=n<=10);

隨後有n行,每行有乙個字串。

輸出輸出所要求的回文子串。

樣例輸入

1

confuciuss say:madam,i'm adam.

樣例輸出

madam,i'm adam

思路:從前往後找比較浪費時間,所以從中間往兩邊找。用兩個指標記錄字母分別往兩邊列舉。

注意:回文串的長度有可能為奇數也有可能為偶數。

#include#include#include#include#include#include#include#define mv(a,b) memset(a,b,sizeof(a));

using namespace std;

typedef long long ll;

const int maxn=5000+10;

const double eps=1e-8;

const double pi =acos(-1.0);

int pos[maxn];

char s[maxn],a[maxn];

bool judge(char s)

int main()

else

}}//處理字串。

int ll,rr,maxx;

ll=0;

rr=0;

maxx=0;

for(int i=0;i=k)

break;

if(a[i-j]!=a[i+j])

break;

if(j*2+1>maxx)

}//字串長度為奇數

for(int j=0;;j++)

}//字串長度為偶數

} for(int i=ll;i<=rr;i++)

cout<

NY132 最長回文子串

時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 輸入乙個字串,求出其中最長的回文子串。子串的含義是 在原串連續出現的字串片段。回文的含義是 正著看和倒著看是相同的,如abba和abbebba。在判斷是要求忽略所有的標點和空格,且忽略大小寫,但輸出時按原樣輸出 首尾不要輸出多餘...

最長回文子串 最長回文子串行

1.最長回文子串行 可以不連續 include include include include using namespace std 遞迴方法,求解最長回文子串行 intlps char str,int i,int j intmain include include include using n...

最長回文子串

描述 輸入乙個字串,求出其中最長的回文子串。子串的含義是 在原串連續出現的字串片段。回文的含義是 正著看和倒著看是相同的,如abba和abbebba。在判斷是要求忽略所有的標點和空格,且忽略大小寫,但輸出時按原樣輸出 首尾不要輸出多餘的字串 輸入字串長度大於等於1小於等於5000,且單獨佔一行 如果...