【深基2.例7】数字反转

把输入当作字符串处理,用切片反转后输出。

OJ: luogu

题目 ID: P5705

难度:入门

标签:python入门字符串输入输出

日期: 2026-07-15 17:50

题意

输入一个形如 123.4 的一位小数,要求把所有字符倒过来,输出 4.321

思路

虽然题面说这是浮点数,但真正要做的是“字符顺序反转”。如果先转成 float,可能引入不必要的格式问题;直接把输入当字符串处理最简单。

brute.py 不适合这题,因为没有算法优化过程;字符串切片反转就是完整解法。

Python 知识

  • input() 读取一行文本,得到字符串。
  • s[::-1] 是切片写法,表示从后往前取完整字符串。
  • 题目要求保留小数点的位置随字符一起反转,所以不能把输入转成数字再处理。

对应的本地 Python 笔记:

  • /home/rainboy/mycode/hugo-blog/content/program_language/python/input_output_and_strings.md:字符串下标、切片和反转。
  • /home/rainboy/mycode/hugo-blog/content/program_language/python/oj_input_output_cheatsheet.md:读取字符串输入。

代码

python
import sys

number = input()
sys.stdout.write(number[::-1])
cpp
/**
 * Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
 * rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
 * rainboy的学习导航网站: https://idx.roj.ac.cn
 * create_at: 2026-07-27 00:00
 * update_at: 2026-07-27 00:00
 */

#include <bits/stdc++.h>
using namespace std;

int main() {
    // 输入是一位带小数点的数字,当作字符串处理更容易反转
    char s[10];
    cin >> s;
    int len = strlen(s);
    // 从后往前输出每个字符,实现字符串反转
    for (int i = len - 1; i >= 0; i--) {
        cout << s[i];
    }
    cout << endl;
    return 0;
}

Guide 风格代码

cppbook《C++ 快速入门》教学风格的写法(std:: 前缀、i += 1 循环、0 起始下标):

cpp
/**
 * Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
 * rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
 * rainboy的学习导航网站: https://idx.roj.ac.cn
 * create_at: 2026-08-14 15:08
 * update_at: 2026-08-14 15:08
 */
#include <iostream>

int main() {
    int integer_part = 0; // 小数点前的整数部分,如 123
    char dot = '\0';      // 读掉小数点本身
    int decimal_part = 0; // 小数点后的部分,如 4
    std::cin >> integer_part >> dot >> decimal_part;

    // 反转:先输出小数部分,再按 个位、十位、百位 依次取出整数部分的每一位
    std::cout << decimal_part << '.' << integer_part % 10
              << (integer_part / 10) % 10 << integer_part / 100 << '\n';
    return 0;
}

Pythonic 写法

切片反转:

python
print(input()[::-1], end="")

复杂度

字符串长度固定很小,时间复杂度 O(1)O(1),空间复杂度 O(1)O(1)

总结

看到“数字反转”不要急着转成数值类型。只要题目关心的是字符格式,Python 字符串切片通常更直接、更稳。