题目链接

反向输出一个四位数

题目描述

给定一个四位整数,将其各位数字反向输出。若反向后高位为零,也需保留该零。

输入描述: 在一行中输入一个四位整数。

输出描述: 输出一个四位整数,为输入反向后的结果;若高位为零,也需保留。例如,输入 1000,应输出 0001

解题思路

本题最关键的细节是“若反向后高位为零,也需保留该零”。这个要求提示我们,如果将输入当作一个纯粹的整数进行数学运算来反转,会导致前导零丢失(例如,数学上 1000 反转后是 1,而不是 0001)。

因此,最简单直接的方法是:

  1. 按字符串读取:将输入的四位数作为字符串而不是整数来读取。这样可以完整地保留所有数字字符,包括 0
  2. 反转字符串:利用编程语言内置的字符串反转功能。
    • 在 Python 中,可以使用 [::-1] 切片。
    • 在 C++ 中,可以使用 std::reverse 函数。
    • 在 Java 中,可以使用 StringBuilderreverse() 方法。
  3. 输出反转后的字符串:直接打印反转后的字符串,即可满足题目要求。

这种方法不仅代码简洁,而且能完美处理所有情况,包括前导零。

代码

#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 的字符串。