题目链接
题目描述
规定一种简写方式:对于一个由多个单词组成的复合词,只保留每个单词的首字母,并将这些首字母转换为大写后按顺序连接起来,形成一个缩写。
输入描述:
- 在一行中输入一个复合词,由若干个单词组成。
- 单词之间由单个空格分隔。
- 每个单词仅由大小写英文字母组成。
输出描述:
- 输出一个字符串,即复合词的简写形式。
示例:
- 输入:
International Collegiate Programming Contest
- 输出:
ICPC
解题思路
解决这个问题的核心思路是分割字符串并处理每个部分。这是一个基础且常见的字符串操作任务。
-
读取整行输入: 由于输入的复合词中包含空格,我们必须读取完整的一行字符串,而不是一次只读取一个单词。
- C++ 中使用
getline(cin, line)
。 - Java 中使用
scanner.nextLine()
。 - Python 中使用
input()
。
- C++ 中使用
-
按空格分割字符串: 将读取到的整行字符串以空格为分隔符,切分成一个由多个单词组成的列表(或数组)。
- C++ 中可以使用
stringstream
来方便地逐个提取被空格隔开的单词。 - Java 中有
line.split(" ")
方法。 - Python 中有
line.split()
方法。
- C++ 中可以使用
-
遍历单词并提取首字母: 循环遍历上一步得到的单词列表。
- 对于每一个单词,获取其第一个字符(索引为
0
的字符)。 - 使用语言内置的函数将这个字符转换为大写。
- 将转换后的大写字母追加到一个结果字符串(或
StringBuilder
、list
)中。
- 对于每一个单词,获取其第一个字符(索引为
-
输出结果: 遍历完成后,将构建好的结果字符串打印出来即可。
这种方法逻辑清晰,直接地实现了题目的要求。
代码
#include <iostream>
#include <string>
#include <sstream> // for stringstream
#include <cctype> // for toupper
using namespace std;
int main() {
// 1. 读取整行输入
string line;
getline(cin, line);
// 2. 使用 stringstream 来分割字符串
stringstream ss(line);
string word;
string result = "";
// 3. 逐个处理单词
while (ss >> word) {
if (!word.empty()) {
// 提取首字母,转大写,并追加到结果
result += toupper(word[0]);
}
}
// 4. 输出结果
cout << result << endl;
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1. 读取整行输入
String line = sc.nextLine();
// 2. 按空格分割
String[] words = line.split(" ");
StringBuilder result = new StringBuilder();
// 3. 遍历单词数组
for (String word : words) {
if (!word.isEmpty()) {
// 提取首字母,转大写,并追加
result.append(Character.toUpperCase(word.charAt(0)));
}
}
// 4. 输出结果
System.out.println(result.toString());
}
}
# 1. 读取整行输入
line = input()
# 2. 按空格分割成单词列表
words = line.split()
# 3. 使用列表推导式高效处理
# 对每个单词(word),取其首字母(word[0]),转为大写(.upper())
# 最后用 "" 将所有结果连接起来
acronym = "".join([word[0].upper() for word in words])
# 4. 输出结果
print(acronym)
算法及复杂度
- 算法: 字符串处理、分割。
- 时间复杂度:
,其中
L
是输入字符串的总长度。分割字符串和遍历单词都需要扫描整个字符串一次。 - 空间复杂度:
。
split
操作会创建一个存储所有单词的列表或数组,其总大小与输入字符串L
成正比。这是主要的额外空间开销。