给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
题解:
class Solution { public: int reverse(int x) { if(x/10 == 0) return x; //一般情况,10以内 int y = 0; while(x) { if(y > INT_MAX/10 || y < INT_MIN/10) //防止溢出 return 0; y *= 10; y += x%10; //取出x的个位,存入y x /= 10; //去掉x的个位,方便下一轮进行 } return y; } };
备注:
INT_{MIN, MAX}在<limits.h>头文件中定义 最常见情况的为INT_MIN == −2^31 和 INT_MAX == 2^31 − 1; 但是不能假定[INT_MIN, INT_MAX]一定等于[−2^31, 2^31 − 1]。