将整数进行翻转
翻转Integer有溢出的可能, 需要对溢出进行处理(这里没有处理溢出也AC了, leetcode这题可能没有溢出的测试用例)
class Solution {
public boolean isPalindrome(int x) {
//负数一定不是回文数
if(x < 0) return false;
//将整数翻转
int rvx = 0;
int ox = x;
while(x != 0){
int low = x%10;
x = x/10;
rvx = rvx * 10 + low;
}
// 如果是回文数, 翻转后一定与原数相等
return rvx == ox ? true : false;
}
}
避免处理溢出的方法
- 只翻转X的低位
- 注意奇数位与偶数位的回文不同
class Solution {
public boolean isPalindrome(int x) {
if(x < 0 || (x > 0 && x%10 == 0)) return false; //当个位数是0时, 也不会回文数
int rvx = 0;
while(rvx <= x){
int low = x%10;
rvx = rvx * 10 + low;
if(rvx == x || rvx == x/10) return true;//121,1221奇偶情况都要处理
x = x/10;
}
return false;
}
}