回文数求法,整数反转求法,套用的数学公式

首先是整数反转的求法:

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

class Solution {
    public int reverse(int x) {// 123
        long n = 0;// 先设置数字n为0
        while(x!=0){// 123不等于0 12不等于0
            n = n*10+x%10;// n变成0+3 n变成30+2  321
            x = x/10;// x变成12 0
        }
        return (int)n==n?(int)n:0;// n=321而且是int类型返回int
    }
}

然后是回文数的求法:

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

class Solution {
    public boolean isPalindrome(int x) {// 输入121
        if(x<0){
            return false;
        }// 121不等于0
        int rem = 0,y=0;
        int quo = x;
        while(quo!=0){// quo也就是x不等于0 12 1
            rem = quo%10;// rem等于1 2 
            y=y*10+rem;// y等于1 12
            quo=quo/10;// quo等于12 1
        }
        return y==x;// 如果y和x相等 就是回文数
    }
}

在回文数和整数反转中都用到了两个式子就是a=a*10+b%10(b=b/10),这个式子套在循环中,能够让数字进行反转。
假设这个数字是123,b就是123,然后a是我们设定的值,基本都是默认0。
在第一次循环的时候,a会变成3,b会变成12。
第二次进入循环的时候,a则会变成32,变成1。
这个式子不仅可以用在回文数或者整数反转中,稍微变形之后还能够用在其他场景,算是一个比较特定的算法概念。

你可能感兴趣的:(后端,算法)