题解
词组缩写
1 条题解
-
0
解题思路
词组的缩写就是每个单词首字母的大写组合。例如 end of file → EOF。
要找出每个单词的开头,观察规律:一个字符是单词开头,满足下面两个条件之一:
- 它是整行的第 0 个字符;
- 它前面一个字符是空格。
做法:
- 用
getline读入整个词组(因为有空格,不能用cin >>)。 - 从头到尾扫描每个字符:
- 判断它是不是单词开头(是第 0 个字符,或前一个是空格)。
- 如果是,把这个字母转成大写并输出(本来是大写的直接输出,小写的转大写)。
- 最后换行。
举例:
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