news 2026/4/20 14:23:21

GESP三级考试:《string 专项 训练闯关题》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP三级考试:《string 专项 训练闯关题》


🏰 第1关:寻找第一个孤独字符

1、🎯题目

输入一个字符串,输出第一个只出现一次的字符。
如果没有,输出No


(1)输入

abaccdeff

(2)输出

b

2、🧚故事

字符村里住着很多字母居民:

a 出现2次
b 出现1次
c 出现2次

只有b没有双胞胎,所以它最孤独!


3、🧠思路

先统计每个字符出现次数,再从左到右找第一个次数=1的字符。


4、✅代码

#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int cnt[256] = {0}; for(char c : s) cnt[c]++; for(char c : s) { if(cnt[c] == 1) { cout << c; return 0; } } cout << "No"; return 0; }

🏰 第2关:反转字符串魔法

1、🎯题目

输入字符串,倒着输出。

(1) 输入

hello

(2) 输出

olleh

2、🧚故事

魔法师把单词镜像翻转啦!

hello → olleh


3、🧠思路

从最后一个字符往前输出。


4、✅代码

#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; for(int i = s.size()-1; i >= 0; i--) cout << s[i]; return 0; }

🏰 第3关:统计元音精灵

1、🎯题目

统计字符串中 a e i o u 的个数。

(1)输入

education

(2)输出

5

2、🧚故事

森林里住着5种元音精灵:

a e i o u

数一数来了几个!


3、🧠思路

遍历字符串,遇到元音就加1。


4、✅代码

#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int ans = 0; for(char c : s) { if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u') ans++; } cout << ans; return 0; }

🏰 第4关:回文城堡

1、🎯题目

判断字符串是否回文(正读反读一样)。

(1)输入

level

(2)输出

Yes

2、🧚故事

回文城堡的大门只有对称密码才能打开!

level ✔
abc ❌


3、🧠思路

左右指针比较。


4、✅代码

#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int l = 0, r = s.size()-1; while(l < r) { if(s[l] != s[r]) { cout << "No"; return 0; } l++; r--; } cout << "Yes"; return 0; }

🏰 第5关:大写变身术

1、🎯题目

把小写字母变成大写字母。

输入

hello

输出

HELLO

2、🧚故事

小写士兵经过魔法门后变成大写勇士!


3、🧠思路

小写字母 -32 就变大写。


4、✅代码

#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; for(char &c : s) { if(c >= 'a' && c <= 'z') c = c - 32; } cout << s; return 0; }

🏰 第6关:单词计数器

1、🎯题目

输入一行句子,统计单词数量(单词之间空格分开)。

(1)输入

I love Cpp

(2)输出

3

2、🧚故事

句子火车来了,每节车厢是一个单词!


3、🧠思路

统计从空格后开始的新单词。


4、✅代码

#include <iostream> #include <string> using namespace std; int main() { string s; getline(cin, s); int cnt = 0; bool inWord = false; for(char c : s) { if(c != ' ' && !inWord) { cnt++; inWord = true; } if(c == ' ') inWord = false; } cout << cnt; return 0; }

🏰 第7关:最长连续相同字符

1、🎯题目

输出最长连续相同字符长度。

(1)输入

aaabbccccdd

(2)输出

4

2、🧚故事

字符排队站岗,看看谁的队伍最长!


3、🧠思路

记录当前连续长度,更新最大值。


4、✅代码

#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; int mx = 1, cur = 1; for(int i = 1; i < s.size(); i++) { if(s[i] == s[i-1]) cur++; else cur = 1; if(cur > mx) mx = cur; } cout << mx; return 0; }

🏰 第8关:删除某字符

1、🎯题目

删除字符串中所有字符a

(1)输入

banana

(2)输出

bnn

2、🧚故事

国王下令:所有 a 字母离开王国!


3、🧠思路

新建答案字符串,遇到不是a才加入。


4、✅代码

#include <iostream> #include <string> using namespace std; int main() { string s, ans = ""; cin >> s; for(char c : s) { if(c != 'a') ans += c; } cout << ans; return 0; }

🏰 第9关:字符排序比赛

1、🎯题目

把字符串字符按从小到大排序。

(1)输入

dcba

(2)输出

abcd

2、🧚故事

字符运动会开始啦!按字典顺序排队!


3、🧠思路

使用 sort 排序。


4、✅代码

#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string s; cin >> s; sort(s.begin(), s.end()); cout << s; return 0; }

🏰 第10关:密码强度检测

1、🎯题目

判断字符串是否同时含有:

  • 大写字母

  • 小写字母

  • 数字

有则输出Strong,否则输出Weak

(1)输入

Abc123

(2)输出

Strong

2、🧚故事

勇士密码要通过三重考验:

🛡 大写门
⚔ 小写门
💎 数字门


3、🧠思路

设置3个标记变量。


4、✅代码

#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; bool A = false, a = false, d = false; for(char c : s) { if(c >= 'A' && c <= 'Z') A = true; else if(c >= 'a' && c <= 'z') a = true; else if(c >= '0' && c <= '9') d = true; } if(A && a && d) cout << "Strong"; else cout << "Weak"; return 0; }

🎁 总结:知识点

1、基础操作

✔ 遍历
✔ 修改
✔ 拼接
✔ 删除

2、常见算法

✔ 计数
✔ 查找
✔ 回文判断
✔ 连续统计
✔ 排序

3、技巧

✔ 双指针
✔ 标记法
✔ 数组统计


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 14:06:22

Obsidian终极B站视频插件:3步实现笔记内高清播放

Obsidian终极B站视频插件&#xff1a;3步实现笔记内高清播放 【免费下载链接】mx-bili-plugin 项目地址: https://gitcode.com/gh_mirrors/mx/mx-bili-plugin 想在Obsidian知识库中直接观看B站视频内容吗&#xff1f;Media Extended B站插件为您提供了完美的解决方案。…

作者头像 李华
网站建设 2026/4/20 13:57:25

Xilinx IP核仿真避坑指南:如何正确配置QuestaSim的secureip/unisim库?

Xilinx IP核仿真避坑指南&#xff1a;如何正确配置QuestaSim的secureip/unisim库&#xff1f; 在FPGA开发中&#xff0c;Xilinx的高性能IP核&#xff08;如PCIe、DDR控制器等&#xff09;往往需要依赖特殊的仿真库才能正常工作。许多工程师在使用QuestaSim进行仿真时&#xff…

作者头像 李华
网站建设 2026/4/20 13:56:15

3分钟搞定Windows和Office激活:KMS_VL_ALL_AIO终极解决方案

3分钟搞定Windows和Office激活&#xff1a;KMS_VL_ALL_AIO终极解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经因为Windows系统突然弹出激活提醒而打断重要工作&#xff1f;或…

作者头像 李华