最長回文子串的找法(c語言)

2021-10-02 04:21:31 字數 1127 閱讀 6304

回文串

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 32768k,其他語言65536k

64bit io format: %lld

題目描述

既然大家都知道回文串是怎麼回事了,那我們就長話短說,現在有乙個字串,長度小於1200,我想知道最長的回文子串長度是多少。
輸入描述:

多組輸入,輸入字串只包含小寫字母。

輸出描述:

每組輸出乙個數字,表示最長的回文子串。

示例1輸入

複製aqppqole

ebcml

輸出複製41

#include

#include

intmain()

,b[1210]=

;//a全部為一 表示回文串至少為1 b全部置0

len=

strlen

(w);

//得到字串長度

for(i=

0;i)//找奇數回文子串

}

首先咱們開始分析奇數子串,在定義的時候我們選擇給a陣列全部賦值為1,因為子串至少為一,方便後面輸出,b陣列是找偶數子串的,後面會有解釋,如果我們要找更大的奇數子串,至少子串長度就是3了,讓j=i-1,k=i+1可以達到最小長度,當然我們找的時候j至少就要大於等於0了,k當然要小於字串長度,當w[j]==w[k]時,我們知道這是乙個子串,用a記錄其長度,讓j–,k++,再判斷長度為5時是不是還是回文串即可,偶數的略有不同,看**就明白;

#include

#include

intmain()

,b[1210]=

;//a全部為一 表示回文串至少為1 b全部置0

len=

strlen

(w);

//得到字串長度

for(i=

0;i)//找奇數回文子串

}for

(i=0

;i)//偶數回文找法

} max=1;

for(i=

0;i)printf

("%d\n"

,max);}

}

最長回文子串,中心擴充套件法 C語言

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 因為是找回文子串,所以使用中心擴充套件法,中心擴充套件有兩種,一種是以單個字元 i,i 為中心,乙個是...

C語言 最長回文子串

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

最長回文子串(暴力法)

求最長回文子串最簡單最暴力的方法就是遍歷每乙個子串,看看這個子串是不是回文,是的話這個子串的長度有沒有最大的長度max大,遍歷每乙個子串的時間複雜度是o n 2 判斷乙個子串是不是回文子串的時間複雜度是o n 這三個for迴圈巢狀在一起所以時間複雜度為o n 3 include include in...