算法分析与设计课程——LeetCode刷题之Reverse Integer

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38041038/article/details/78081209

最近由于其他项目作业,没有时间刷题,今晚刷一下算法

一、题目

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

click to show spoilers.

Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

二、题意

输入一个32位有符号数,让你把这个数字的相对称位置的地位和高位换位置,而且,假设输入为32位有符号整数。 当反转的整数溢出时,您的函数应返回0。

三、思路

给定一个多位数,让你把他各个位置的数字颠倒了,假如这个数字是n,那么n%10可就是个位,然后来一个赋值:n /=10;那么这个时候的n就是前面的n减掉个位数在除以10的数;我们再以这个数字为目标进行上面的操作,一直到最高位的数字成为一个个位数,然后把这个个位数放在新的多位数的最低位。

四、代码

class Solution {
    public int reverse(int x) {
        long num = 0;
		while(x != 0){
			num = num*10 + x%10;
			x /= 10;
		}
		if(num >= Integer.MIN_VALUE && num <= Integer.MAX_VALUE)
			return (int)num;
		else
			return 0;
    }
}
注意:在java语言中,利用Interger.MAX_VALUE,Interger.MIN_VALUE取得int类型的最大值(2147483647)和最小值(-2147483648。而且由于long类型是长整型,所以,为了在判断是否溢出之前保证可以存储的下,限先用long类型的sum存储。
这只是我的个人理解,若有不足,批评指正。

猜你喜欢

转载自blog.csdn.net/m0_38041038/article/details/78081209