使用C++给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零
时间: 2024-05-24 17:13:02 浏览: 127
。示例:
输入:123
输出:321
输入:-123
输出:-321
输入:120
输出:21
解题思路:
我们可以将该整数从低位到高位的每一位数字依次取出,然后反转过来,最后组成一个新的整数。需要注意的是,如果原数为负数,则新数也应该为负数,且需要将原数的符号位去掉再进行反转。
代码实现:
int reverse(int x){
int flag = 1; // 标记正负号
if(x < 0){
flag = -1;
x = -x;
}
long long res = 0; // 新数
while(x){
res = res * 10 + x % 10;
x /= 10;
}
res *= flag; // 恢复符号
if(res > INT_MAX || res < INT_MIN) // 溢出判断
return 0;
return res;
}
相关问题
用C++给定一个整数,输出其反转后的数字
在C++中,你可以通过下面的方式来实现将一个整数反转的功能:
```cpp
#include <iostream>
// 函数来反转整数
int reverseInteger(int num) {
int reversed = 0;
while (num != 0) {
int remainder = num % 10; // 取余数得到最后一位
reversed = reversed * 10 + remainder; // 将剩余位加到结果前面
num /= 10; // 移除最右边的位
}
return reversed;
}
int main() {
int inputNum;
std::cout << "请输入一个整数: ";
std::cin >> inputNum;
int reversedNum = reverseInteger(inputNum);
std::cout << "反转后的数字是: " << reversedNum << std::endl;
return 0;
}
```
在这个程序中,我们首先读取用户输入的整数,然后创建一个`reverseInteger`函数,通过循环取出每一位数字并将其添加到`reversed`变量的前面,直到原始数变成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;
}
```
阅读全文