题目
给你一个 32 位的有符号整数
x
,返回将x
中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围
[−2^31, 2^31−1]
,就返回 0。
注意
- 数字类型
将 int 改为 long long
- 将数字转换为字符串
char str[33] = {'\0'};
sprintf(str, "%ld", x);
- 计算位数,即字符串长度
int len = strlen(str);
- 超出 int 范围,则溢出
if (result < INT_MIN || result > INT_MAX ) {
return 0;
}
代码
int reverse(long long x) {
long long z;
long long result = 0;
char str[33] = {'\0'};
sprintf(str, "%ld", x);
int len = strlen(str);
if (x > 0) {
for (int i = len; i > 0; i--) {
z = x % 10;
x = x / 10;
result += z * pow(10, i - 1);
}
} else if (x < 0) {
x = (-1) * x;
for (int i = len; i > 0; i--) {
z = x % 10;
x = x / 10;
result += z * pow(10, i - 2);
}
result = (-1) * result;
}
if (result < INT_MIN || result > INT_MAX ) {
return 0;
}
return result;
}