LeetCode 9 回文数 题解
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
示例 1:
输入:x = 121
输出:true
示例 2:
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10
输入:x = 10
输出:false
解释:从右向左读, 为 01 。因此它不是一个回文数。
示例 4:
输入:x = -101
输出:false
提示:
-231 <= x <= 231 - 1
代码
class Solution {
public boolean isPalindrome(int x) {
// //解法1:利用额外空间:字符串
// if(x > 9){
// String str = x+"";
// int left = 0,right = str.length()-1;
// while(left < right){
// if(str.charAt(left) != str.charAt(right)){
// return false;
// }
// left++;
// right--;
// }
// return true;
// }
// else{
// return (x<0)?false:true;
// }
//解法2:数学法,但是只反转一半
if(x< 0 || (x%10 == 0 && x!=0)){
return false;
}
if(x<10){
return true;
}
int reverse = 0;
while(x>reverse){
reverse = reverse*10 + x%10;
x /= 10;
}
return x == reverse || x == reverse/10;//偶数个数字,奇数个数字
}
}