演算法 判斷回文數

2021-08-22 02:45:48 字數 1154 閱讀 3598

回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
* 輸入: 121

* 輸出: true

** 輸入: -121

* 輸出: false

* 解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是乙個回文數。

** 輸入: 10

* 輸出: false

* 解釋: 從右向左讀, 為 01 。因此它不是乙個回文數。

public class palindrome 

/*** 方法一: 轉換為陣列,將第乙個和最後乙個依次進行對比

* 思路:

** @param x

* @return

*/public static boolean ispalindrome1(int x)

}return flag;

}/**

* 方法二:反轉一半數字

* 思路:

* 映入腦海的第乙個想法是將數字轉換為字串,並檢查字串是否為回文。

* 但是,這需要額外的非常量空間來建立問題描述中所不允許的字串。

* 反轉全部數字可能會導致溢位問題,所以我們只需反轉一半

* 首先,反轉我們可以通過原數字x / 10以及

* 反轉數:revertednumber = revertednumber * 10 + x %10

* 那麼如何判斷是否進行到一半了呢?

* 我們可以加個判斷,當: x < revertednumber時說明進行到一半了

** @param x

* @return

*/public static boolean ispalindrome2(int x)

int revertednumber = 0;

while (x > revertednumber)

//當數字長度為奇數時,我們可以通過 revertednumber/10 去除處於中位的數字。

//例如:輸入12321,最後結果為: x = 12,revertednumber = 123

return x == revertednumber || x == revertednumber / 10;

}}

判斷回文數演算法

回文數是指正序 從左到右 讀和倒序 從右到左 讀都是一樣的整數。比如形如 121,1221,13531 的數字都是回文數,但 121,10,25 等等都不是回文數。如何判斷乙個數是回文數?這是乙個很簡單的演算法,最常見的實現方式是使用乙個棧或其他方法,把數字序列逆序,然後判斷逆序後的數字是否等於原先...

回文數判斷 演算法

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 從右向左...

判斷回文數

如果乙個數的反向倒置數和它的順向數一樣,那麼這個數稱為回文數。編寫乙個測試程式,提示使用者輸入乙個整數值,然後報告這個數是不是回文數。我先後一共寫了三個函式。方法一 由於題目要求輸入的是整數值,所以按照整數的方法倒置數字,與原數比較即可。public class palindrom public s...