top1编程
← 返回题目
题解

词组缩写

1 条题解

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

    解题思路

    词组的缩写就是每个单词首字母的大写组合。例如 end of file → EOF。

    要找出每个单词的开头,观察规律:一个字符是单词开头,满足下面两个条件之一:

    • 它是整行的第 0 个字符;
    • 它前面一个字符是空格。

    做法:

    1. 用 getline 读入整个词组(因为有空格,不能用 cin >>)。
    2. 从头到尾扫描每个字符:
      • 判断它是不是单词开头(是第 0 个字符,或前一个是空格)。
      • 如果是,把这个字母转成大写并输出(本来是大写的直接输出,小写的转大写)。
    3. 最后换行。

    举例:end of file → 首字母 e、o、f 分别转大写 → EOF。

    参考代码

    // 词组缩写:取每个单词的首字母并转为大写输出
    #include <iostream>
    using namespace std;
    int main() {
        string s;            // 英文词组,含空格
        getline(cin, s);     // 整行读入
        for (int i = 0; i < (int)s.size(); i++) {
            // 单词开头:是第一个字符,或前一个字符是空格
            if (i == 0 || s[i - 1] == ' ') {
                if (s[i] >= 'a' && s[i] <= 'z') s[i] = s[i] - 'a' + 'A'; // 转大写
                cout << s[i]; // 输出该单词首字母
            }
        }
        cout << endl;
        return 0;
    }
    

    复杂度分析

    词组长度小于 100。只需要从头到尾扫描一遍字符串,判断每个字符是否是单词开头,时间复杂度 O(n),空间 O(n)(保存词组)。

    • 1