最近遇到了几道算法题,都涉及到了如何将一个整形的数字进行翻转,在这里记录一下数字翻转的代码的模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int reverseNum(int x) {

//记录最后翻转后的值
        int revert = 0;
//记录从x中从右往左遍历得到的值
        int b = 0;
//当x的值为0时表明已经遍历完成
        while(x >0){
//对当前x取余获取x的个位数
            b = x % 10;
//对x除10
            x /= 10;
//这里判断了翻转后的数字是否溢出,如果溢出就直接返回
            if(revert > INT_MAX/10 || (revert == INT_MAX && b > INT_MAX % 10)){

                return INT_MAX;

            }

   if(revert < INT_MIN/10 || (revert == INT_MAX && b < INT_MIN % 10)){

                return INT_MIN;

            }
//将新得到的数字加到revert右边。
            revert = revert *10 + b;

        }

        return revert;

    }

Edited on Views times