英雄哥《算法零基础100讲》传送门
https://bbs.csdn.net/forums/hero?category=0&typeId=17913https://bbs.csdn.net/forums/hero?category=0&typeId=17913
一、题目力扣https://leetcode-cn.com/problems/reverse-integer/
二、解题思路:求余,得出最低位,×10,加上新来的位,特殊情况,加个if单拿出来判断一下
int reverse(int x){
if(x==-pow(2,31)){ //负数变成正数时候会溢出一个,把它拿出来,单看
return 0;
}
int p=abs(x); //把负数变成正数,abs()函数,求绝对值
int ans=0;
while(p){
if(ans>pow(2,31)/10){ //当ans大于这的时候,再乘10就溢出了,在这判断一下,return 0;
return 0;
}
ans*=10; //求余出来的是最高位,要是新来一个,那就把之前的*10
ans+=p%10; //然后加上新来的
p/=10; //除10 把之前的最后一位弄没,之后就是继续循环,知道p==0,结束循环
}
if(x>=0){
return ans; //正的就直接返回
}
else return -ans; //负的加哥负号
}
三、结果


![[英雄] 《C语言入门100例》(第15例) 整数翻转——习题 [英雄] 《C语言入门100例》(第15例) 整数翻转——习题](http://www.mshxw.com/aiimages/31/512974.png)
