题目链接:
题目大意:
给定一个整数 abc, 其中 a, b, c 各为一个数字, 返回其逆转形式, 也即 cba ;
题中还提到, 假定输入为 32位有符号整数, 而若逆转后的数 "溢出了", 则应返回 0 ;
例如: 给定: x = 123, 则输出应为: 321 ;
例如: 给定: x = -123, 则输出应为: -321 ;
解题过程:
(1) 题意很简单, 由于要考虑对溢出的处理, 所以考虑直接以整数的形式进行处理( 而非字符串) ;
(2) 就用最老实的做法, 记录正负情况, 然后分别对输入(设为 x)和输出(设为 rx)进行逐位处理 ; 至于溢出处理, 可以简单地用 rx 是否可以还原出 x 作判断标准 ;
代码如下:
class Solution {
public:
int reverse(int x) {
bool negative = false;
if (x < 0) {
negative = true;
}
x = abs(x);
auto ret = 0;
while (x > 0) {
auto ret_assume = ret * 10;
if (ret_assume / 10 != ret) {
return 0;
} else {
ret = ret_assume;
}
auto a = x % 10;
x /= 10;
ret += a;
}
if (negative) {
ret *= -1;
}
return ret;
}
};
Runtime: 22 ms