1.leetcode原题链接:. - 力扣(LeetCode)
2.题目描述
给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数
是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
示例 1:
输入:x = 121 输出:true
示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
提示:
-231 <= x <= 231 - 1
3.实现方法
思路:反转后面一半的数字,与前面一半的数字进行比较,相等就为回文数
1.判断两种特殊情况
1.1 x为负数直接返回false;
1.2 如果x是回文数的话,最后一位数不能是0(因为最后一位是0,第一位数字也得是0,x=0除外)
2.定义一个反转数,当x>reverNum,reverNum=reverNum*10 +x%10
3.判断是否为回文数
3.1 当x为偶数时,如果x==reverNum,说明是回文数。
3.2当x为奇数时,如果x==reverNum/10,说明是回文数(例:x=12321,循环结束,x=12,reverNum=123,reverNum/10=12)
class Solution {public boolean isPalindrome(int x) {if(x<0 || (x%10==0 && x!=0) ){return false;}int reverNum =0;while(x>reverNum){reverNum=reverNum*10 +x%10;x/=10;}return x==reverNum || x==reverNum/10;}
}