解决方式:(32位系统)
设64位int变量sum:int64_t sum;
1、求出颠倒整数sum后,通过INT32_MAX和INT32_MIN来判断:
(sum > INT32_MAX || sum < INT32_MIN) ? 0 : sum;
2、 或是直接与
-2147483648~2147483647比较
附:
问题:
给定一个范围为 32 位 int 的整数,将其颠倒。
解答:(最优解法)
static int x = []() {
std::ios::sync_with_stdio(false);
cin.tie(NULL);
return 0;
}();
class Solution {
public:
int reverse(int x) {
int symbol=1;
if(x>-10 && x<10)
return x;
//转换成为正数
if(x<=-10)
{
x=-x; symbol=-1;
}
/*去掉后导0
while(x%10==0)
x/=10;
*/
int64_t a=0;
while(x)
{
a=a*10+x%10;
x/=10;
}
a=a*symbol;
return (a > INT32_MAX || a < INT32_MIN)?0:a;
}
};