问题
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
代码
class Solution {
public:
int reverse(int x) {
int neg = 0;
if(x < 0) neg = 1;
else neg = 0;
int x_back = abs(x);
int temp = 0;
while (x_back > 0) {
temp = temp * 10 + x_back % 10;
x_back /=10;
}
return neg?(-1) * temp:temp;
}
};
分析
把符号提取出来,然后循环的对绝对值之后的X result * 10 + x%10 ; x/= 10; 最后把符号补上返回即可.
值得注意的是:
这里肯定会存在负数、正数超过了 singed int 的范围,但是题目如果考虑到需要翻转,应该不会故意给出一个不合法的值,比如 1999999999,在没有翻转的时候,它是合法的,但是翻转之后,显然会溢出。反正这里需要注意下就完事了。
总结
基本的数字计算算法,没啥新意。