给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
思路:
首先所有的负数和尾数为0的数都不是回文数
反转一半的数字与另一半比较
对于数字 1221,如果执行 1221 % 10,我们将得到最后一位数字 1,要得到倒数第二位数字,我们可以先通过除以 10 把最后一位数字从 1221 中移除,1221 / 10 = 122,再求出上一步结果除以10的余数,122 % 10 = 2,就可以得到倒数第二位数字。如果我们把最后一位数字乘以10,再加上倒数第二位数字,1 * 10 + 2 = 12,就得到了我们想要的反转后的数字。 如果继续这个过程,我们将得到更多位数的反转数字。
1 class Solution { 2 public boolean isPalindrome(int x) { 3 if(x<0) return false;//一个数小于0不是回文数 4 if(x==0) return true;//0是回文数 5 int i=0; 6 while(i<x){ 7 i*=10; 8 i+=x%10; 9 if(i==0) return false;//结尾为0就不是回文数 10 x/=10; 11 } 12 if(i==x){ 13 return true; 14 } 15 else{ 16 if(i/10==x){ 17 return true; 18 } 19 else return false; 20 } 21 } 22 }
原文:https://www.cnblogs.com/yttty/p/14541685.html