LeetCode-7:Reverse Integer

第七题:  reverse integer
题目概述:

**English:**Reverse digits of an integer.
中文意思:将一个整型变量倒置,如将123变为321,将-123变为-321.
Example1: x = 123, return 321
Example2: x = -123, return -321


题目求解:

此题的关键不在于算法的设计,倒置相信很多同学都会写,此题关键在于溢出处理,这是很多同学容易忽略的。
* 首先对于补码的学习
  补码范围在数字显示中,如8位,显示的范围是 -128 - 127.  其补码显示为 0x80   -   0x7F1000 0000  ~  0111 1111
* 补码的优点:         
  (1) 减法运算可以用加法来实现,即用求和来代替求差。
  (2) 数的符号位可以同数值部分作为一个整体参与运算。
   (3) 两数的补码之和(差)=两数和(差)的补码。


题目补充:

  此题,没有给出的条件是,判断溢出,如果超过了返回0,有可能有同学因为没有这个判断而无法通过,加入此条件此题就不难写了。

         

程序代码:

“`c++
class Solution {
public:
int reverse(int x) {
if (x == 0)
return 0;

    int max = 0x7fffffff;        //补码表示32位int变量最大值
    int min = 0x80000000;  //补码表示32位int变量最小值
    int sign = -1;
    if (x > 0)
        sign = 1;

    x = abs(x);
    double answer = 0;
    int temp = 0;
    for (; x != 0;)
    {
        temp = x % 10;
        x = x / 10;
        answer = answer * 10 + temp;

    }
    answer = answer * sign;
    if (answer > max || answer < min)
        return 0;
    return answer;
}

};“`


Run Time

运行时间:9ms

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值