以下問題的解決思路來自於劉汝佳先生的《演算法競賽入門經典》。
問題描述:
輸入行資料,在其中找出最長的回文數(正著倒著是一樣的)
這種方法屬於中心擴充套件法,就是以每個字元為中心向左右分別擴充套件,得到最長的回文字元。
樣例輸入:confuciuss say : madam,i'm adam.
樣例輸出:madam,i'm adam
#include#include#include#define maxn 5000+10
char buf[maxn],s[maxn];
int p[maxn];
int main()
} for(j=0;i-j>=0 && i+j+1max)
} }for(i=x;i<=y;i++)
return 0;
}
就是在這裡寫下一些在學習工程中的想法思路。
最長回文字串
scanf s 輸入字串碰到空格或者tab就會停下來。此處可以使用fgets或者gets 另外注意標頭檔案cctype中的函式的巧妙使用,此處使用isalpha和toupper簡化了 此處列舉字串的中間位置,然後向倆邊擴充套件,節省了時間複雜度,注意向倆邊擴充套件時,奇數個和偶數個長度的區別。另外程...
最長回文字串
回文串定義 回文串 是乙個正讀和反讀都一樣的字串,比如 asddsa 或者 lovekevol 等等就是回文串。回文子串,顧名思義,即字串中滿足回文性質的子串。這裡我給出通過 列舉回文串的中間位置i,然後不斷向外擴充套件,直達有字元不相同。注意,這裡長度為奇數和偶數的處理方式是不一樣的。下面給出 這...
最長回文字串
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 輸入乙個字串,求出其中最長的回文子串。子串的含義是 在原串連續出現的字串片段。回文的含義是 正著看和倒著看是相同的,如abba和abbebba。在判斷是要求忽略所有的標點和空格,且忽略大小寫,但輸出時按原樣輸出 首尾不要輸出多餘...