最長回文串

2021-07-24 14:56:44 字數 1314 閱讀 1047

時間限制:1000ms

單點時限:1000ms

記憶體限制:64mb

描述 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。

這一天,他們遇到了一連串的字串,於是小hi就向小ho提出了那個經典的問題:「小ho,你能不能分別在這些字串中找到它們每乙個的最長回文子串呢?」

小ho奇怪的問道:「什麼叫做最長回文子串呢?」

小hi回答道:「乙個字串中連續的一段就是這個字串的子串,而回文串指的是12421這種從前往後讀和從後往前讀一模一樣的字串,所以最長回文子串的意思就是這個字串中最長的身為回文串的子串啦~」

小ho道:「原來如此!那麼我該怎麼得到這些字串呢?我又應該怎麼告訴你我所計算出的最長回文子串呢?

小hi笑著說道:「這個很容易啦,你只需要寫乙個程式,先從標準輸入讀取乙個整數n(n<=30),代表我給你的字串的個數,然後接下來的就是我要給你的那n個字串(字串長度<=10^6)啦。而你要告訴我你的答案的話,只要將你計算出的最長回文子串的長度按照我給你的順序依次輸出到標準輸出就可以了!你看這就是乙個例子。」

樣例輸入

3

abababa

aaaabaa

acacdas

樣例輸出

7

53

/***

zui chang hui wen chuan

manache algorithm

*/#include

#include

#include

#define endl '\n'

using

namespace

std;

int p[100000005];

int getmaxstring(string & s)

else

int start = i - p[i];

int _end = i + p[i];

while(s[start--]==s[_end++])

if(i+p[i] > mx)

}int _mx = 0;

for(int i = 0;iif(p[i]>_mx) _mx = p[i];

}return --_mx;

}int main()

cout

<< getmaxstring(ss0) << endl;

}return

0;}

最長回文串

輸入乙個字串,求出其中的最長回文字串,樣例輸入 confucicss say madam,i m asam。樣例輸出 masam,i m asam。這個題首先要判斷最長那個回文串的位置,並且與大小寫無關,用到函式 toupper 然後輸出後面的字串。include include include i...

最長回文串

給出乙個包含大小寫字母的字串。求出由這些字母構成的最長的回文串的長度是多少。資料是大小寫敏感的,也就是說,aa 並不會被認為是乙個回文串。注意事項 假設字串的長度不會超過1010。您在真實的面試中是否遇到過這個題?yes 樣例給出 s abccccdd 返回7 一種可以構建出來的最長回文串方案是 d...

最長回文串

題目 給出乙個包含大小寫字母的字串。求出由這些字母構成的最長的回文串的長度是多少。資料是大小寫敏感的,也就是說,aa 並不會被認為是乙個回文串。注意事項 假設字串的長度不會超過1010。您在真實的面試中是否遇到過這個題?yes 樣例給出 s abccccdd 返回7 一種可以構建出來的最長回文串方案...