top1编程
← 返回题目
题解

首尾互换

1 条题解

  • 0
    @ 2026-8-5 10:18:17

    解题思路

    题目要求:把原字符串的首、尾两个字符互换位置,得到一个新字符串,然后把新字符串拼接在原字符串的后面一起输出。

    做法:

    1. 读入原字符串 s,求出它的长度 n。
    2. 新建一个字符串 t,先复制 s 的内容。
    3. 交换首尾:t[0] = s[n-1](把原串最后一个字符放到新串开头),t[n-1] = s[0](把原串第一个字符放到新串末尾)。中间的部分保持不变。
    4. 输出 s + t。

    举例:原串 Hello,长度 5。新串把 H 和 o 互换得到 oellH。拼接后输出 HellooellH。

    参考代码

    // 首尾互换:首尾字符互换得到新串,接在原字符串后面输出
    #include <iostream>
    using namespace std;
    int main() {
        string s, t;         // s为原串,t为首尾互换后的新串
        cin >> s;            // 输入原字符串
        int n = s.size();    // 字符串长度
        t = s;               // 先复制一份
        t[0] = s[n - 1];     // 新串开头放原串末尾字符
        t[n - 1] = s[0];     // 新串末尾放原串开头字符
        cout << s << t << endl; // 原串+新串一起输出
        return 0;
    }
    

    复杂度分析

    字符串长度不超过 50。交换首尾字符和拼接都只需要把每个字符处理一次,记字符串长度为 n,时间复杂度为 O(n),空间上额外用一个新串 t,也是 O(n)。

    • 1