top1编程
← 返回题目
题解

字符串的逆序

1 条题解

  • 0
    @ 2026-8-5 16:07:42

    解题思路

    题目要求把一个字符串倒过来输出。

    比如 "abcde" 倒过来是 "edcba"。

    一个关键的注意点:字符串里可能有空格,所以必须用 getline(cin, s) 整行读入,不能用 cin >> s。

    怎么逆序输出呢?字符串 s 的第 0 个字符是 s[0],最后一个字符是 s[s.size()-1]。我们只要从最后一个字符开始,一直往前输出到第 0 个字符,就是逆序啦。

    解题步骤:

    1. 用 getline 读入字符串 s;
    2. 用一个循环,下标 i 从 s.size()-1 开始,一直减到 0,每次输出 s[i];
    3. 最后输出一个换行。

    参考代码

    // P4593 字符串的逆序:逆序输出一个可能含空格的字符串
    #include <iostream>
    using namespace std;
    
    int main() {
        string s;
        getline(cin, s);           // 可能有空格,用 getline 整行读取
        // 从最后一个字符往前依次输出
        for (int i = (int)s.size() - 1; i >= 0; i--) cout << s[i];
        cout << endl;              // 输出换行
        return 0;
    }
    

    复杂度分析

    字符串的长度不超过 1000。程序把每个字符从后往前输出一遍,时间大约是 O(n),其中 n 是字符串的长度。除了字符串本身外没有额外的大空间,空间是 O(1)。

    • 1