回文数不用字符串的一种解法

我们可以通过将该数字num从最后一位开始取,取出最后一位之后保存到另外一个数字newNum上,并且同时将原newNum*10之后与新保存的最后一位相加,即newNum=newNum*10+num%10。然后将原数字/10消去最后一位,即num/=10之后再在while语句中循环这一操作,当num>newNum的时候结束循环
代码如下

public class Solution {
    public bool IsPalindrome(int num) {
        // 当 x < 0 时,x 不是回文数。的最后一位是 0,为了使该数字为回文,则其第一位数字也应该是 0,只有 0 满足这一属性,因此如下判断
        if(num < 0 || (num % 10 == 0 && num != 0)) {
            return false;
        }
        int newNum = 0;
        while(x > newNum) {
            newNum= newNum* 10 + num % 10;
            num /= 10;
        }
        // 由于处于中位的数字不影响回文(它总是与自己相等),所以我们可以简单地将其去除。
        return num == newNum|| num == newNum/10;
    }
}

猜你喜欢

转载自blog.csdn.net/u012580143/article/details/81017180