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

来源:互联网 发布:淘宝达人在哪里登录 编辑:程序博客网 时间:2024/06/04 19:18

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

一、题目

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;elsereturn 0;    }}
注意:在java语言中,利用Interger.MAX_VALUE,Interger.MIN_VALUE取得int类型的最大值(2147483647)和最小值(-2147483648。而且由于long类型是长整型,所以,为了在判断是否溢出之前保证可以存储的下,限先用long类型的sum存储。
这只是我的个人理解,若有不足,批评指正。

阅读全文
0 0