leetcode007:Reverse Integer

问题描述

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

分析

分析之前,leetcode提供了一些注意点,比如反转数字后造成的溢出要处理,关键问题来了,怎么处理溢出?这里用了float.h的类库,里面提供了int型的最值,所以只要将反转为long long类型然后判断是否溢出就可以啦。这里还用到了格式化输出的io函数,很是方便。

代码

class Solution {
public:
    int reverse(int x) {
        int flag = 0;
        if (x < 0) { flag = 1;}// x = -x; }
        char arr[33];
        char arr1[33];
        long long k;
        sprintf(arr, "%d", x);//格式化输出到arr数组;
        int len = strlen(arr);
        int i=0;
        if (flag) { arr1[0] = '-'; i = 1; }
        if (flag){
            for (; i < len; i++)
                arr1[i] = arr[len - i];
        }
        else{
            for (; i < len; i++)
                arr1[i] = arr[len - i - 1];
        }
        arr1[len] = '\0';
        sscanf(arr1, "%lld", &k);//格式化输入到k中
        //cout << k<<endl<<len << endl;
        if (k < INT_MIN || k > INT_MAX) k = 0;
        return k;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值