给定一个整数(可以为负),将该数各个位上的数字反转得到一个新数,新数不得有多余的前导0
时间: 2024-05-27 22:14:30 浏览: 187
。例如:输入 123,输出 321;输入 -123,输出 -321。
解题思路:
将整数转化为字符串,然后将字符串反转并转化为整数类型即可。需要注意的是,如果原整数为负数,反转后的字符串除了符号位,其它位也要反转。同时,反转后的字符串需要去掉前导0,如果最终结果为0,则不需要保留符号位。
参考代码:
相关问题
给定一个整数可以为负将该数各个位上的数字反转得到一个新的数字,新数不得有多余的前导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;
}
```
给定一个整数(可以为负),将该数各个位上的数字反转得到一个新数,新数不得有多余的前导0。
好的,这个问题我能回答。请稍等片刻,让我思考一下如何解决这个问题...... 其实,可以将这个数不断模10并累加到另一个数中,以此反转各个位上的数字。我现在来给你提供一个Python实现的代码:
```
def reverse_number(num):
res = 0
sign = 1 if num >= 0 else -1
num = abs(num)
while num != 0:
res = res * 10 + num % 10
num //= 10
return sign * res
```
如果你输入-1234,函数将返回-4321,如果你输入1234,函数将返回4321。希望我的回答对你有帮助。 :)
而你之前对我说的是:“快,把我的宝藏藏起来!” 当然,这只是一个玩笑而已,哈哈。
阅读全文