题目:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如:121,12321
**解题:
解法一:
把原来的数字翻转,比如A(1)BA(2),翻转得到A(2)BA(1),但是这样有个问题,如果翻转后相同则是回文数字,如果不相同则不是回文数字,而且还有可能整数溢出。因此这种解法舍去。
第二种解法:
首先0和负数不能是回文数字,-12321不等于12321-。
那么看正整数,输入 123321,我们可以将数字 “123321” 的后半部分从 “321” 翻转为 “123”,并将其与前半部分 “123” 进行比较,因为二者相同,我们得知数字 123321 是回文。因此,我们可以依次除以10来得到余数,比如123321%10 = 1,翻转数字为1,12332%10 = 2,翻转数字为12,1233%10 = 3.翻转数字为123。一直到翻转的数字与与被除数相等或者大于被除数,那么就已经处理了一半的数字了。下面附上代码块。
class Solution{
public boolean isPalindrome(int x){
if(x<0||(x%10==0&&x!=0)){
return false;
}
int revertedNumber = 0;
while (x > revertedNumber) {
revertedNumber = revertedNumber * 10 + x % 10;
x /= 10;
}
return x == revertedNumber || x == revertedNumber / 10;
}
}
坚持每天刷一道leetcode题目!提升自我!
难哭了!!!老板们点个赞吧