📷 题解插图【CSP】CSP-XL 2025辽宁复赛真题-第一题, 字符串数数(count)(字符串考点,相当于GESP三级)
📅 2025-11-05·✍️ OneCoder·计算中...·⏱️ 4 分钟
#CSP#C++#字符串
CSP-XL 2025辽宁复赛真题-第一题,字符串考点,相当于GESP三级,难度⭐★☆☆☆。
CSP-XL 2025辽宁复赛真题-第一题, 字符串数数(count)
题目要求

题目分析
解题思路
-
题意梳理
给定一个仅由小写字母构成的字符串,要求统计每个字母出现的次数,并按字母表顺序依次输出 26 行结果。
共 26 行,第 1 行是a的个数,第 2 行是b的个数,其余字母均为 0。 -
算法选择
- 开一个长度为 26 的整型数组
cnt,初始全 0。 - 遍历字符串,对字符
c执行cnt[c-'a']++。 - 最后顺序输出
cnt[0..25],每行一个数字。
- 开一个长度为 26 的整型数组
-
复杂度分析
字符串长度为 ( 量级)。- 时间复杂度:,线性扫描一次字符串,再输出 26 个数。
- 空间复杂度:,仅使用一个固定大小的计数数组。
-
边界与细节
- 输入可能为空串,此时 26 行全为 0。
- 输出严格按
a~z顺序,不能遗漏、不能多行、不能带额外空格。 - 使用
freopen读写文件,符合复赛要求。
示例代码
C++
18 行
#include <iostream>
int count_ary[26] = {}; // 初始化26个字母的计数数组,全部置0
int main() {
freopen("count.in", "r", stdin); // 重定向标准输入,从文件count.in读取数据
freopen("count.out", "w", stdout); // 重定向标准输出,结果写入count.out
std::string str; // 存储输入的字符串
std::cin >> str; // 读取字符串
// 遍历字符串,统计每个小写字母出现次数
for (int i = 0; i < str.length(); i++) {
count_ary[str[i] - 'a']++; // 将字符映射到0~25,对应计数器加1
}
// 按字母顺序输出26个计数,每行一个
for (int i = 0; i < 26; i++) {
std::cout << count_ary[i] << "\n";
}
return 0; // 程序正常结束
}
附:样例和测试数据下载地址:
链接:https://pan.quark.cn/s/f8ec0cb6b88d?pwd=Xvaj 提取码:Xvaj
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
GESP 编程与算法 · 三级⏱️ 14 分钟
【CSP】CSP-J 2024真题 | 扑克牌 luogu-P11227 (相当于GESP三级左右水平)
CSP-J 2024真题- 扑克牌,模拟考点,适合GESP二、三级左右水平的考生练习(二级需要先了解字符串),难度⭐☆☆☆☆,洛谷难度等级入门。
阅读全文 →
GESP 编程与算法 · 三级⏱️ 7 分钟
【CSP】CSP-X 2018真题 | 11的倍数 luogu-B4075 (适合GESP三级及以上考生练习)
CSP-X 2018真题-11的倍数,一道结合字符串处理与数学整除性判定的题目,考察对大整数的按位处理以及模运算的应用。由于数据位数可达100位,需要用字符串代替整型变量来处理输入。适合GESP三级及以上考生练习,难度⭐⭐。
阅读全文 →
GESP 编程与算法 · 三级⏱️ 9 分钟
【CSP】CSP-J 2020真题 | 优秀的拆分 luogu-P7071 (适合GESP二、三级及以上考生练习)
CSP-J 2020第一题-优秀的拆分,重点考察整数的二进制位拆分思想,适合GESP二、三级及以上的考生从多种思路下手练习,难度⭐☆,洛谷难度等级入门−。
阅读全文 →
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
读者讨论与留言
💬 还没有读者留言,快来成为第一个讨论者吧!