1 条题解

  • 0
    @ 2026-1-30 12:40:15
    #include<bits/stdc++.h>
    using namespace std;
    
    int main() {
        string s;
        getline(cin, s); // [1] 读取整行输入(包含空格,保留原空格位置)
        int n = s.size(); // [2] 获取字符串总长度
        string res = "";  // [3] 初始化存储结果的字符串
    
        // [4] 核心for循环:遍历整个字符串,逐单词处理
        for (int i = 0; i < n; i++) {
            if (s[i] == ' ') { // 遇到空格,直接保留到结果
                res += ' ';
            } else { // 遇到单词字符,处理当前单词的翻转
                int j = i; // 标记当前单词的起始位置,向后找单词结束位置
                // 嵌套for循环:找到当前单词的最后一个字符位置(下一个空格/字符串末尾)
                for (; j < n && s[j] != ' '; j++);
                // 倒序遍历单词字符,添加到结果(实现单词翻转)
                for (int k = j - 1; k >= i; k--) {
                    res += s[k];
                }
                i = j - 1; // 跳过当前单词已处理的字符,避免重复遍历
            }
        }
    
        cout << res; // [5] 输出最终结果
        return 0;
    }
    
    • 1

    信息

    ID
    132
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    1
    已通过
    1
    上传者