1.给定一个整数(可以为负),将该数各个位上的数字反转得到一个新数,新数不得有多余的前导0。
时间: 2024-05-30 11:15:38 浏览: 103
例如,输入123,输出321;输入-456,输出-654。
算法思路:
1. 先将输入的整数转化为字符串,方便操作;
2. 判断整数的正负性,如果是负数,则将符号记录下来,反转时不改变符号;
3. 将字符串反转;
4. 去除反转后的字符串开头可能存在的0;
5. 如果原整数是负数,则在反转后的字符串前面加上符号。
代码实现如下:
def reverse_integer(num):
num_str = str(num)
if num_str[0] == '-':
symbol = '-'
num_str = num_str[1:]
else:
symbol = ''
reverse_str = num_str[::-1]
reverse_str = reverse_str.lstrip('0')
return int(symbol + reverse_str)
相关问题
1. 给定一个整数(可以为负),将该数各个位上的数字反转得到一个新数,新数不得有多余的前导0。
好的,这是一个数学问题,可以用以下代码实现:
```
int reverse(int x) {
int res = 0;
while (x != 0) {
int digit = x % 10;
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;
}
return res;
}
```
当然,更简单的方法是先将该整数转化为字符串再反转字符串。
给定一个整数可以为负将该数各个位上的数字反转得到一个新的数字,新数不得有多余的前导0
算法思路:
1. 将给定整数转换为字符串;
2. 对于正数,直接反转字符串并转换为整数;
3. 对于负数,先将负号去掉,再反转字符串,最后将结果加上负号。
时间复杂度:O(n),其中 n 为数字的位数。
Python 代码实现:
```python
def reverse_integer(x):
if x == 0:
return 0
elif x > 0:
s = str(x)
y = int(s[::-1])
else:
s = str(-x)
y = -int(s[::-1])
return y if y.bit_length() < 32 else 0
```
C++ 代码实现:
```cpp
#include <iostream>
using namespace std;
int reverse_integer(int x) {
if (x == 0) {
return 0;
} else if (x > 0) {
string s = to_string(x);
reverse(s.begin(), s.end());
long long y = stoll(s);
return y > INT_MAX ? 0 : y;
} else {
string s = to_string(-x);
reverse(s.begin(), s.end());
long long y = -stoll(s);
return y < INT_MIN ? 0 : y;
}
}
int main() {
int x = -123;
int y = reverse_integer(x);
cout << y << endl; // 输出 -321
return 0;
}
```
阅读全文
相关推荐














