您的位置:首页 > 编程语言 > C语言/C++

Leetcode c语言-Reverse Integer

2017-09-10 21:40 405 查看
Reverse digits of an integer.

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

click to show spoilers.

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循环是找到该数有多少位。第二个循环是转换数字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: