Leetcode:整数反转(C++)
题目地址:https://leetcode-cn.com/problems/reverse-integer/
题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
题目示例
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解题思路
思路1:逆序累加处理,需要注意的是逆序结果可能出现溢出情况,为避免此种情况,使用long long类型存储反转结果,并对大于上限和下限值返回0,同时,因为负数取模结果还是负数,所以无需额外处理,时间复杂度O(logn)。
思路2:整数转换字符串处理,利用to_strin()函数将整数x转换为字符串s,然后使用反转函数reverse()将除过符号位的数字进行反转,最后进行溢出判断即可。
程序源码
思路1
class Solution {
public:
int reverse(int x) {
long res = 0;
while(x)
{
res = res *10 + x % 10;
x /= 10;
}
if(res < INT_MIN || res > INT_MAX) return 0;
return res;
}
};

![Leetcode:整数反转(C++)
[编程语言教程]](https://www.zixueka.com/wp-content/uploads/2024/01/1706714871-15da7f25b5503a0.jpg)
