您的位置:首页 > 其它

32位整数溢出处理-LeetCodeQ7:整数逆序

2018-01-18 13:26 721 查看
问题如下:给一个32位的整数,求它的逆序整数。Example 1:Input: 123
Output: 321
Example 2:Input: -123
Output: -321
Example 3:Input: 120
Output: 21注意:
这个问题假设限定整数不超过32位。如果逆序后的结果超过32位,则返回0.(如:1534236469的逆序为:9646324351。这个溢出了。)解答:刚开始我觉得难点是:整数溢出的部分不知道如何处理。写完之后点提交,报错的部分正是溢出的部分,于是我开始思考如何处理。其实很简单,判断生成的y是否溢出,32位的范围是:(2^31 - 1) ~ (-2^31),可以写个for循环算出来,也可以直接按计算器(为了偷懒),于是问题就变成了只需要做下面的判断即可:if(retV > 2147483647 || retV < -2147483648)
return 0;不过还有一个注意点:生成的retV不能用int,否则还没判断就溢出了。下面是完整的解答:class Solution {
public int reverse(int x) {
long y = 0;
int yu = x % 10;
int chu = x / 10;
while(yu != 0 || chu != 0) {
y = y * 10 + yu;
yu = chu % 10;
chu = chu / 10;
}
if(y > 2147483647 || y < -2147483648)
return 0;
return (int)y;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐