题目描述:
给定一个 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类型,最后进行类型转换即可。