LeetCode 7. 整数反转

题意

给出一个 32 位的有符号整数,将这个整数中每位上的数字进行反转。

思路

  • 想法:保留符号直接翻转,注意防止爆int。时间复杂度$O(log_{10}(n))$。
  • 吐槽:官方给的结果是如果爆了int则返回0。(是我瞎了,题目中最下面的注意里写了。)

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
int reverse(int x) {

int revx = 0;
while(x)
{
int add = x % 10;
if(revx > INT_MAX / 10 || (revx == INT_MAX / 10 && add > 7)) return 0;
if(revx < INT_MIN / 10 || (revx == INT_MIN / 10 && add < -8)) return 0;
x /= 10;
revx = revx * 10 + add;
}
return revx;
}
};

总结

我爱水题。嗯。

Donate comment here
0%