LeetCode-07-ReverseInteger

本文最后更新于:a year ago

题目

Given a 32-bit signed integer, reverse digits of an integer.


Example1
1
2
Input: 123
Output: 321

Example2

1
2
Input: -123
Output: -321

Example3

1
2
Input: 120
Output: 21

Note: Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−2^31, 2^31 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

题目大意

给出一个32位的有符号整数,你需要将这个整数中每一位上的数字进行反转。注意:假设我们的环境只能存储得下32位的有符号整数,则其数值范围为[-2^32, 2^32-1]。请根据这个假设,如果反转后整数溢出那么就返回0。

解题思路

这一题很简单,只是反转所给出的数字,但是要注意,如果反转之后的数字不在[−2^31, 2^31 − 1]范围之中的话,需要返回0。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package leetcode;

public class D07_ReverseInteger {

public int reverse(int x) {
int tmp = 0;
while (x != 0) {
if ((tmp * 10) /10 != tmp) {
tmp = 0;
break;
}
tmp = tmp * 10 + x % 10;
x /= 10;
}
return tmp;
}

}

复杂度分析

* 时间复杂度:O(log(N)),x中大约有log10(x)位数字。
* 空间复杂度:O(1)


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!