题目链接
题目描述
给定一个四位整数,将其各位数字反向输出。若反向后高位为零,也需保留该零。
输入描述: 在一行中输入一个四位整数。
输出描述:
输出一个四位整数,为输入反向后的结果;若高位为零,也需保留。例如,输入 1000
,应输出 0001
。
解题思路
本题最关键的细节是“若反向后高位为零,也需保留该零”。这个要求提示我们,如果将输入当作一个纯粹的整数进行数学运算来反转,会导致前导零丢失(例如,数学上 1000
反转后是 1
,而不是 0001
)。
因此,最简单直接的方法是:
- 按字符串读取:将输入的四位数作为字符串而不是整数来读取。这样可以完整地保留所有数字字符,包括
0
。 - 反转字符串:利用编程语言内置的字符串反转功能。
- 在 Python 中,可以使用
[::-1]
切片。 - 在 C++ 中,可以使用
std::reverse
函数。 - 在 Java 中,可以使用
StringBuilder
的reverse()
方法。
- 在 Python 中,可以使用
- 输出反转后的字符串:直接打印反转后的字符串,即可满足题目要求。
这种方法不仅代码简洁,而且能完美处理所有情况,包括前导零。
代码
#include <iostream>
#include <string>
#include <algorithm> // 需要此头文件以使用 std::reverse
using namespace std;
int main() {
string s;
// 将四位数作为字符串读入
cin >> s;
// 使用 algorithm 库中的 reverse 函数反转字符串
reverse(s.begin(), s.end());
cout << s << endl;
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 将四位数作为字符串读入
String s = sc.next();
// 使用 StringBuilder 的 reverse 方法反转字符串
String reversed_s = new StringBuilder(s).reverse().toString();
System.out.println(reversed_s);
}
}
# 将输入作为字符串读取
s = input()
# 使用切片操作 [::-1] 反转字符串并输出
print(s[::-1])
算法及复杂度
- 算法:字符串反转。
- 时间复杂度:
- 因为输入的字符串长度固定为 4。
- 空间复杂度:
- 需要常数空间来存储长度为 4 的字符串。