//问题描述:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
// 示例 1:
// 输入: 121
//输出: true
// 输入: -121
//输出: false
//解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
// 示例 3:
// 输入: 10
//输出: false
//解释: 从右向左读, 为 01 。因此它不是一个回文数。
这是一道判断整数是否为回文数的问题,其实就是翻转过来是否等于原来的数,第一反应是将整数当成字符串处理,切割判断,但如果做过整数翻转这一题后,会发现回文数问题就是和整数翻转问题是一样的思路?如果得到了一个数翻转过来的整数,再判断和原整数是否相等即可确定是否为回文数了,关键如何去解决对整数翻转是解决题目的关键。
整数反转的关键代码为:
int res = 0;
while (x != 0) {
res = x % 10 + res * 10;
x /= 10;
}
其具体思路为:比如x=121这个数,先设立一个变量res=0,当x>0时不断对x取余,121%10=1,然后令res=121%10+10res=1,同时对x不断除10取整,保证取到倒数上一位数, res=12%10+110 = 12,最后 res=1%10+12*10=121。
因此回文串的整体代码为:
class Solution {
public boolean isPalindrome(int x) {
int temp =x;
if (x < 0) return false;
int res = 0;
while (x != 0) {
res = x % 10 + res * 10;
x /= 10;
}
if (res == temp){
return true;
}else{
return false;
}
}
}