來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/palindrome-number
題目
判斷一個(gè)整數(shù)是否是回文數(shù)逾一×じ睿回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 為 -121 汇鞭。 從右向左讀, 為 121- 凄敢。因此它不是一個(gè)回文數(shù)碌冶。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 為 01 。因此它不是一個(gè)回文數(shù)涝缝。
思路
假設(shè)入?yún)⑹莤:
- 根據(jù)示例1扑庞,負(fù)數(shù)都不滿足條件,排除拒逮;
- 根據(jù)示例3罐氨,10的倍數(shù)也不符合條件,排除滩援;
- 其他情況下岂昭,只要將x從個(gè)位開(kāi)始拆解,并拼成新的整數(shù)狠怨,同時(shí)原數(shù)字除以10约啊,當(dāng)原數(shù)小于或者等于新整數(shù)時(shí),則拆解完成佣赖;
- 這時(shí)恰矩,新整數(shù)跟x的位數(shù)一樣,或者大于x憎蛤,只需要判斷新整數(shù)等于x外傅,或者/10操作后等于x纪吮,即為回文數(shù)。
代碼
public boolean isPalindrome(int x) {
if (x < 0 || x % 10 == 0 && x != 0) {
return false;
}
int reversNum = 0;
while (x > reversNum) {
reversNum = reversNum * 10 + x % 10;
x = x / 10;
}
return x == reversNum || x == reversNum / 10;
}