题目相关
题目链接
LeetCode中国,https://leetcode-cn.com/problems/reverse-integer/。
题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例
示例1
输入: 123
输出: 321
示例2
输入: -123
输出: -321
示例3
输入: 120
输出: 21
注意
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
题目分析
LeetCode 给出本题难度简单。
题意分析
将一个有符号整数进行反转。
样例数据分析
题目比较简单,就不需要分析了。
算法思路
如何倒过来?很简单啊,采用如下代码就可以实现。
int x;
long long ans = 0;
while (x!=0) {
ans = ans*10 + x%10;
x /= 10;
}
难点
如何判断数据溢出。我们可以使用 C++ 定义的一个常数 INT_MAX。该数据定义了 int 的最大值,需要包括 climits 这个头文件。
AC 参考代码
class Solution {
public:
int reverse(int x) {
int tmp = x;
long long ans = 0;
while (tmp) {
ans = ans*10 + tmp%10;
tmp /= 10;
}
if (abs(ans)>INT_MAX) {
//数据越界
return 0;
}
return ans;
}
};