判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是乙個回文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是乙個回文數。
這是乙個判斷數字是否是回文數的題目,這裡有乙個簡單的寫法,就是將數字轉換為字串,然後再反轉比較就能得到答案:
class solution
return false;}}
就如上面的**所示,是不是很簡單!但是這種辦法是比較死的,對於記憶體而已消耗會比較大,下面是高階的**,這個是參考力扣上某個大神**所寫的
public boolean ispalindrome(int x)
return x == revertednumber || x == revertednumber / 10;
}
直觀上來看待回文數的話,就感覺像是將數字進行對折後看能否一一對應。
所以這個解法的操作就是 取出後半段數字進行翻轉。
這裡需要注意的乙個點就是由於回文數的位數可奇可偶,所以當它的長度是偶數時,它對折過來應該是相等的;當它的長度是奇數時,那麼它對折過來後,有乙個的長度需要去掉一位數(除以 10 並取整)。
具體做法如下:
每次進行取餘操作 ( %10),取出最低的數字:y = x % 10
將最低的數字加到取出數的末尾:revertnum = revertnum * 10 + y
每取乙個最低位數字,x 都要自除以 10
判斷 x 是不是小於 revertnum ,當它小於的時候,說明數字已經對半或者過半了
最後,判斷奇偶數情況:如果是偶數的話,revertnum 和 x 相等;如果是奇數的話,最中間的數字就在revertnum 的最低位上,將它除以 10 以後應該和 x 相等。如圖
判斷乙個數字是否是回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。看到這個題目最先想到的就是將這個整形數字轉化成字元陣列,然後對這個字元陣列進行遍歷,這種思路當然是可以的,但是時間複雜度較高,還要引入乙個陣列,空間複雜度較高。第二個想法是將數字本身反轉,然後將反轉後的數字與原始...
判斷乙個數字是否是回文
最近碰到乙個題目,其中一步判斷數字是否為回文 由於題目要求是最短時間實現,不要考慮實現本身的效率 1如果直接去實現,就是比較數字的最高位值和最低位,然後再。public boolean isp int x if x temp bit bit為數值位數 int temp1,temp2 for int ...
判斷乙個數是否是回文數
題目 定義回文數的概念如下 如果乙個非負數左右完全對應,則該數是回文數,如 121,22 如果乙個負數的絕對值左右完全對應,則該數是回文數,如 121,22 public static void main string args printrandm arr,3 1 5 4 system.out.p...