LeetCode刷题(简单版1)

🗨️字数统计=302字 ⏳阅读时长≈1分钟

[7] 整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例一

1
2
输入:x = 123
输出:321

示例二

1
2
输入:x = -123
输出:-321

示例三

1
2
输入:x = 120
输出:21

示例四

1
2
输入:x = 0
输出:0

提示

1
-231 <= x <= 231 - 1

通过

1
2
Your runtime beats 49.05 % of cpp submissions
Your memory usage beats 27.97 % of cpp submissions (5.9 MB)

代码如下

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
33
34
35
36
37
38
39
40
class Solution {
public:
int reverse(int x) {
/*
* 错误答案
* 案例:
* Testcase
* 1534236469
* Expected Answer
* 0
* 分析:事先乘10导致数值溢出,以后需要多加注意!
* if(x == 0) return 0;
* bool ispositive = true;
* if(x<0){
* ispositive = false;
* x = -x;
* }
* int anw = 0;//最终答案
* while(x > 0){
* anw = anw * 10 + x%10;
* x = (x - x%10)/10;
* }
* if(ispositive == false) return -anw;
* return anw;
*/

//Your runtime beats 49.05 % of cpp submissions
//Your memory usage beats 27.97 % of cpp submissions (5.9 MB)
int rev = 0;
while (x != 0) {
if (rev < INT_MIN / 10 || rev > INT_MAX / 10) {
return 0;
}
int digit = x % 10;
x /= 10;
rev = rev * 10 + digit;
}
return rev;
}
};
分享到