写一个给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果的代码
时间: 2024-05-27 08:12:02 浏览: 12
以下是 Python 代码实现:
class Solution:
def reverse(self, x: int) -> int:
if x < 0:
sign = -1
x = -x
else:
sign = 1
res = 0
while x != 0:
res = res * 10 + x % 10
x //= 10
res *= sign
if res < -2**31 or res > 2**31 - 1:
return 0
return res
其中,我们首先判断 x 的符号,然后将其转换为正数进行反转。在反转过程中,我们不断将 res 的个位设置为 x 的最低位,然后将 x 去除最低位。最后,我们将 res 乘以符号 sign,判断其是否越界,如果越界则返回 0,否则返回 res。
相关问题
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
题目描述:
给定一个 32 位的有符号整数 x ,要求将 x 中的数字部分反转后返回结果。
解题思路:
1. 首先判断 x 是否为负数,如果是负数,则将其转化为正数,并标记一下。
2. 将 x 转化为字符串,然后将字符串反转。
3. 将反转后的字符串转化为整数,如果之前标记了负数,则将其转化为负数。
4. 判断反转后的整数是否在 32 位有符号整数的范围内,如果不在,则返回 。
代码实现:
class Solution {
public:
int reverse(int x) {
bool flag = false;
if (x < ) {
flag = true;
x = -x;
}
string s = to_string(x);
reverse(s.begin(), s.end());
long long res = stoll(s);
if (flag) {
res = -res;
}
if (res < INT_MIN || res > INT_MAX) {
return ;
}
return res;
}
};
给你一个32位的有符号整数 x,返回将x中的数字部分反 转后的结果。 如果反转后整数超过32位的 有符号整数的范围 [-231, 231-1],就返回0。 假设环境不允许存储64位整 数(有符号或无符号)。
好的,这是一个经典的整数反转问题。我们可以使用取模和除法操作来逐位反转整数。具体实现可以参考以下代码:
int reverse(int x) {
int res = 0;
while (x != 0) {
int digit = x % 10;
if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > 7)) {
return 0;
}
if (res < INT_MIN / 10 || (res == INT_MIN / 10 && digit < -8)) {
return 0;
}
res = res * 10 + digit;
x /= 10;
}
return res;
}
这个函数会先判断反转后的整数是否超过了32位有符号整数的范围,如果超过了就返回0。否则,我们可以使用一个循环来逐位反转整数。在每一次循环中,我们先取出当前整数的个位数字,然后将其加入到反转后的整数中。需要注意的是,我们要在每一次循环中判断反转后的整数是否超过了32位有符号整数的范围,如果超过了就返回0。
希望这个答案能够帮到你!
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)