给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
整数反转的主要思想就是,不断地将x取余再变为最高为,最终实现反转,这里要注意控住数字的正负以及数值范围。,超出数值范围的时候return 0
ac代码:
#include<iostream>
#include<cmath>
using namespace std;
int reverse(int x) {
long long t = 0,f=1,y;
f=x<0?-1:1;
y=f*x;
while (y)
{
t=t*10+y%10;
y/=10;
}
if (t<INT_MIN||t>INT_MAX)
return 0;
return t*f;
}
int main(){
int x;
cin>>x;
cout<<reverse(x);
return 0;
}
本文介绍了一种算法,用于反转32位有符号整数的每一位数字,包括正负号处理和溢出检查。通过C++代码示例展示了如何在不超出整数范围的情况下实现整数反转。
298

被折叠的 条评论
为什么被折叠?



