题目描述: 7. 颠倒整数
给定一个范围为 32 位 int 的整数,将其颠倒。例 1:
输入: 123 输出: 321
例 2:
输入: -123 输出: -321
例 3:
输入: 120 输出: 21
解题思路:
先判断一下x的正负,用一个数组读取x的每一位,然后再逆序拼凑成ans,看到有溢出的情况只用了ans<0这一个条件来判断溢出,然后wa了几次,之后看了几篇博客发现了一种最简单的方法来判断,即作乘法后的数ans*10和ans是否是互逆的,即可。
代码:
class Solution {
public:
int reverse(int x) {
int a[100];
int n = 0, flag;
if(x >= 0) flag = 1;
else {
flag = 0;
x = -x;
}
while(x != 0) {
a[n++] = x%10;
x = x / 10;
}
int ans = 0,t = 0;
for(int i = 0 ; i < n ; i ++) {
t = ans;
ans = t*10 + a[i];
if(t != ans/10) return 0;
}
if(!flag) ans = -ans;
return ans;
}
};