数字反转普通版

题目描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

输入格式
输入共 1 行,一个整数 N。

输出格式
输出共 1 行,一个整数,表示反转后的新数。

数据范围
-1,000,000,000 ≤ N≤ 1,000,000,000。

输入样例1:

1
123

输出样例1:

1
321

输入样例2:

1
-380

输出样例2:

1
-83

注意事项

  • 当输入的整数为负数时,需要在反转后保持负号。
  • 反转后的整数不能超过 int 类型的范围。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;

int main()
{
int n;
cin >> n;
int res = 0;
while (n)
{
res = res * 10 + n % 10;
n /= 10;
}
cout << res << endl;
return 0;
}

时间复杂度

  • 时间复杂度:O(logn),其中 n 为输入的整数。
  • 空间复杂度:O(1)。

代码解释

  • 我们使用一个循环来反转整数的每一位。
  • 在每一次循环中,我们将整数 n 对 10 取模,得到 n 的个位数,将个位数添加到结果 res 的末尾。
  • 然后,我们将整数 n 除以 10,去掉个位数。
  • 重复以上步骤,直到整数 n 变为 0。
  • 最后,输出结果 res。