最長回文字串

2021-08-18 15:33:50 字數 917 閱讀 3762

給定乙個字串,確定它是否是回文,只考慮字母數字字元和忽略大小寫。

例如:

"a man, a plan, a canal: panama"是回文字串。

"race a car"不是回文字串。

注意:

你有考慮過這個字串可能是空的嗎? 在面試中這是乙個很好的問題。

針對此題目,我們將空字串定義為有效的回文字串

題目分析:

回文字串的定義:乙個正讀和反讀都一樣的字串,比如「level」或者「noon」等等。

題中要求只考慮字母數字字元並忽略大小寫......

考慮採用指標從兩端取出字元進行比較,重點是確定停止的邊界條件。

邊界條件:

1、前後指標差值小於2,此時迴圈比較最多隻剩下乙個字元,不管該字元是何值,字串都必定是回文串;

2、迴圈體中要求:兩指標每次都只找乙個有效字元並進行比較;有效字元的確定:介於0-9,a-z,a-z之間的都是有 效字元,否則一律跳過;

3、標誌位為1表示某指標當前字元是有效的,否則尋找下乙個字元;只有兩個標誌位都為1才能進行比較;

4、迴圈體中出現匹配失敗,立刻返回false;

c++實現:

class solution 

else head++;

if(('0'<=*tail&&*tail<='9')||('a'<=*tail&&*tail<='z')||('a'<=*tail&&*tail<='z'))

else tail--;

if(hflag==1&&tflag==1)

else return false;}}

return true;

}};

最長回文字串

scanf s 輸入字串碰到空格或者tab就會停下來。此處可以使用fgets或者gets 另外注意標頭檔案cctype中的函式的巧妙使用,此處使用isalpha和toupper簡化了 此處列舉字串的中間位置,然後向倆邊擴充套件,節省了時間複雜度,注意向倆邊擴充套件時,奇數個和偶數個長度的區別。另外程...

最長回文字串

回文串定義 回文串 是乙個正讀和反讀都一樣的字串,比如 asddsa 或者 lovekevol 等等就是回文串。回文子串,顧名思義,即字串中滿足回文性質的子串。這裡我給出通過 列舉回文串的中間位置i,然後不斷向外擴充套件,直達有字元不相同。注意,這裡長度為奇數和偶數的處理方式是不一樣的。下面給出 這...

最長回文字串

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