Leetcode c语言-Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
这道题目比较简单,要注意的是溢出的情况,对于有符号int而言,最大的数字是2^31-1=2147483647。因此该数字是上限。
Solutions:
#include <math.h>
int reverse(int x) {
int i,j;
long result=0;
int flag=0;
int max = (2147483647);
long temp=0;
if(x<0) {
flag=1;
x=abs(x);
}
if (x<0 && (x+max)<0)
return 0;
if (x==0)
return 0;
for (i=10;i>=1;i--) {
if((int)(x/((int)pow(10,i-1))))
break;
}
for (j=i;j>=1;j--) {
temp = result+(x/((long)pow(10,j-1)))*((long)pow(10,i-j));
if ((temp - max)>0) {
result = 0;
break;
}
result=temp;
x=(x%(int)pow(10,j-1));
}
if (flag==1 && result!=0)
result = -result;
return (int)result;
}
第一个for循环是找到该数有多少位。第二个循环是转换数字。
posted on 2017-09-10 21:40 sichenzhao 阅读(132) 评论(0) 编辑 收藏 举报