leetcode题库——反转整数

版权声明: https://blog.csdn.net/Dorothy_Xue/article/details/83025557

题目描述:

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231,  231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。

方法:

class Solution {
public:
    int reverse(int x) {
        char ch[100]="";
        if(x>0)
            sprintf(ch,"%d",x);
        else 
            sprintf(ch,"%d",-x);
        double flag=0;
        int i=0;
        while(ch[i]!=NULL)
        {
            flag=(ch[i]-48)*pow(10,i)+flag;
            i++;
        }
        if(x>0&&flag<=(pow(2,31)-1)) return (int)flag;
        else if(x<0&&(0-flag)>=(0-pow(2,31))) return -(int)flag;
        else return 0;
    }
};

思路:

首先将数字转换成字符数组,然后计算。其中注意反转后int的范围。

注意!!!也要考虑flag的范围,因为flag也是int型,有可能计算时,flag已经超了范围。所以将flag定义为double类型,最后进行类型转换即可。

猜你喜欢

转载自blog.csdn.net/Dorothy_Xue/article/details/83025557