盡量短的回文

2021-06-26 22:28:40 字數 1302 閱讀 8042

【題目】

所謂回文,就是正序和倒序遍歷結果一樣的字串,比如'aba', 'abcdedcba'。實現乙個方法pal(),輸入乙個字串,列印出以這個字串為字首的乙個回文。比如輸入'abc',pal()方法列印出'abcdcba'或'abcba';輸入'abcb',可以輸出'abcbcba'或'abcba'。如果可能,輸出盡量短的結果。

【思路一】

以abcdc為例,以此為字首的回文有 'abcdccdcba', 'abcdcdcba','abcdcba',即在輸入的字串後面新增字元,使之成為回文字串

方法一、最先想到的辦法就是把輸入的字串倒序拼接在原字串後面,如原字串為'abcdc',倒序為'cdcba',拼接的結果為'abcdccdcba',然後不斷刪除倒序的字元,拼接上去,判斷是否是回文,是,則輸出,不是,則繼續刪除字元。比如:

1)'abcdcdcba'是回文

2)'abcdccba'不是回文

3)'abcdcba'是回文

最後乙個是回文的字串即未最短的回文字串。

這樣的話,每次可能都求出幾個沒用的回文串,例如上面的'abcdcdcba'是回文,題目要求是求最短的回文串,因此我們從最短可能的回文串開始。

先判斷字串本身是不是回文串,如果不是,一次新增字元,a,ba,cba,dcba,cdcba判斷。

#include //判斷是否是回文串  

int ispalindrome(char* str)

} return 1;

} // 回文串修復

char* pal(char* s)

// 本身就是回文串

if(ispalindrome(s))

for( i = 0;i < len;i++)

str[index] = '\0';

if(ispalindrome(str))

} }

int main()

【思路二】

#include //判斷是否是回文串  

int ispalindrome(char* str)

} return 1;

} // 回文串修復

char* pal(char* s)

// 本身就是回文串

for( i = 0;i < len;i++)

str[index] = '\0';

return str;

}}

}

int main()

盡量使用標準的異常

我們盡量去使用jdk的標準異常。為什麼?第一,使用標準異常和程式設計師原來已經熟悉的api是一致的。第二,可讀性好。不會出現程式設計師不熟悉的異常。第三,使用異常類越少,意味著記憶體占用就越小,並且裝載這些類的時間開銷也越小。最常用的異常是 illegalargumentexception,當呼叫者...

短學期的事情

短學期正式是從三號開始的,今天是7號,已經過去5天了.其實也很快的,18號左右大概就可以回家了。17號 應該完成所有的所謂的 各種各樣的 還真是很多,可能沒個4 5天還真搞不好,這樣專案其實在13號是 必須要做出來的。最終的異地除錯和修改該需要2天時間,本地修改需要一天。這樣來說程式設計階段必須在1...

python的短邏輯

python中的與 and 和或 or 都是短路的與或,短路指的是當通過第乙個值能判斷出結果時,就不再去檢視第二個值了。python支援布林型別的資料,布林型別只有true和false兩種值,但是布林型別有以下幾種運算 與 and 運算 對於與運算,由於要求兩個都為true結果才為true,所以如果...