描述:符号位不变,反转整数的各个数字(digits)。输入为 32 位有符号整数。如果反转后有整数溢出,则应返回 0。
思路:与反转位操作一样,循环除 10 取余即可。符号位单独计算。考虑到有溢出,所以用 long long 来操作数据。
代码:
class Solution { public: int reverse(int x) { long long n = 0; long long t = x; bool neg = x < 0; if(x < 0) t = -t; while(t){ n = n * 10 + t % 10; t /= 10; } if(neg && n - 1 > INT_MAX || !neg && n > INT_MAX) return 0; else return (int)(neg ? -n : n); } };