反转整数
将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 (标记为 32 位整数)。
样例
给定 x = 123
,返回 321
给定 x = -123
,返回 -321
本题采用数学计算法而不是文本翻转,所以末尾为0的翻转不用考虑。
坑就是要考虑溢出啊!!一开始还没搞明白怎么溢出。
int型的数值范围是 -2147483648~2147483647, 那么如果我们要翻转 1000000009 这个在范围内的数得到 9000000001,而翻转后的数就超过了范围。用INT_MAX 表示int最大值
class Solution {
public:
/*
* @param n: the integer to be reversed
* @return: the reversed integer
*/
int reverseInteger(int n) {
// write your code here
if(n==0)
return 0;
int sum=0;
while(n!=0){
if(abs(sum)>INT_MAX/10)//abs为取绝对值,INT_MAX是int最大值
return 0;
sum=sum*10+n%10;
n=n/10;
}
return sum;
}
};
反转整数
Accepted
总耗时:
382 ms
100% 数据通过测试.
太牛了,把AC的喜悦分享给你的朋友吧!