🚀 序章
大家好!继续打卡天梯赛 L1 系列习题,这次带来的是 L1-023 输出 GPLT。这道题聚焦字符筛选、计数与指定规则重组,是字符串处理的入门经典题,非常适合练手基础逻辑。作为从 C 语言转向 C++ 的新手,我用纯 C、基础 C++ 两种方式实现,代码都保留简洁注释,方便理解,和备战天梯赛的同学们一起交流。
📖 题目分析

1. 题目要求
给定一个长度不超过 10000 的、仅由英文字母构成的字符串,按以下规则处理:
2. 输入输出格式
- 输入:一行,长度不超过 10000 的非空英文字符串
- 输出:一行,按规则重组后的字符串,题目保证输出非空
3. 输入输出样例
输入:
plaintext
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
输出:
plaintext
GPLTGPLTGLTGLGLL
4. 核心解题思路
💡 带注释多解法实现
解法 1:纯 C 语言实现(基础高效,适合初学)

解法 2:基础 C++ 实现(简洁易读,现代风格)

🧠 关键思路拆解
1. 输入存储与读取
- C 语言:使用固定长度字符数组,需手动预留结束符空间,用scanf读取、strlen获取长度,是 C 风格字符串的标准操作;
- C++:使用string容器,无需关心长度和越界,getline可读取整行,代码更简洁,安全性更高。
2. 不区分大小写统计
核心是用逻辑或||同时判断大小写,将同一字符的大小写形式归为一个计数器。C 用数组集中管理计数,C++ 用独立变量,新手更容易对应字符和计数,两种方式时间复杂度均为 O (n),效率一致。
3. 循环输出核心逻辑
循环条件是四个计数器不全为 0,保证所有字符都被输出。每一轮循环严格按照 G→P→L→T 的顺序判断,仅当计数器 > 0 时才输出并自减,自然实现 “用完即停、顺序不变” 的效果,是本题的核心考点。
4. C 与 C++ 写法对比
| 字符串类型 | 字符数组char[] | 字符串类string |
| 遍历方式 | 下标 for 循环 | 范围 for 循环,语法更简洁 |
| 计数方式 | 数组count[4]统一管理 | 独立变量,直观易读 |
| 输入输出 | scanf/printf | cin/cout,代码更精简 |
| 新手友好度 | 高,贴合基础语法 | 高,代码可读性更强 |
网硕互联帮助中心






评论前必须登录!
注册