判斷回文數真的是非常常見了,不過我們大多是將其轉換為字串之後再來判斷
所以這道題,我們直接做高階版,不將其轉換為字串
做這道題的時候,我突然想起了 「棧」,我們可以將乙個數拆分開來,存到乙個list中,然後取它的最後一位數存到另乙個list中,之後比對兩個list是否相同(如果奇數就比對前n/2個)
所以我寫出如下**:
class solution
for(int i=0;i前三個判斷條件是直接對特殊情況進行判斷,如小於0的數,一位數,以及最後一位是0的整數
執行結果如下:
在結尾呢,再給大家分享乙個我剛學到的判斷回文數的方法,雖然是用的string型別
///簡單粗暴,看看就行
class solution
}
這個方法的關鍵在reverse(),這個方法的用處就是將輸入流倒序輸出
假如輸入流是 「123456」,那麼倒序輸出後「654321」
如果x是回文數的話,那麼倒序後的數和原數必定相等。
不過實際使用效率似乎並不是很高
下面給大家推薦乙個效率較高的
class solution {private boolean ispalindrome(string s) {
int i=0;
int j=s.length()-1;
while (i這個的效率要比上乙個高許多,且**量較少,也簡單易懂
初學回文自動機
回文這個東西,有一些不錯的演算法。比如馬拉車演算法,就是一種非常優秀的演算法。我也學過一篇有關馬拉車的文章,非常的簡單易懂。但我們今天講的是比馬拉車更強的演算法 回文自動機。回文自動機和ac自動機有一些類似的地方,所以有興趣的同學可以看這篇文章來了解 ac自動機 好了,在開始今天的正文之前,我們得先...
初學回文自動機
回文自動機,據說是解決回文問題的利器。最近剛好遇到一道回文問題,加上正好閒著沒事幹,就來學了學。感覺板子還是非常簡潔的,容易記憶。與一般自動機類似,定義乙個節點的資訊。一般包括表示長度 fail 指標 後繼節點,當然視具體題目還要維護一些特殊資訊。但也要注意回文自動機與一般自動機的區別,就是它的後繼...
leetcode題庫 回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。輸入 121 輸出 true輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。輸入 10 輸出 false 解釋 從右向左讀,為 01 因此它不是乙個回文...