🔤 字符串消消乐大冒险

C5-3 字符串模拟与输出调试 · 拓展项目

⭐ 趣味性 ★★★★★  |  推荐度 ★★★★★

🎮 选择关卡

1字符串小魔术
2有重叠子串计数
3无重叠子串计数
4开心消消乐

🔤 字符串小魔术!

输入一个字符串s,输出它的长度、第一个字符、前3个字符。

  • ① 用 s.size() 求长度
  • ② 用 s[0] 取第一个字符
  • ③ 用 s.substr(0, 3) 取前3个字符
  • ④ 输入"hello",输出:长度5、首字符h、前3个hel

🔍 有重叠的子串计数!

输入字符串s和子串p,统计p在s中出现了多少次(允许重叠)。

  • ① s="aaaa", p="aa",有重叠结果=3
  • ② for循环枚举每个位置i
  • ③ s.substr(i, m)==p 就cnt++
  • ④ 找到后i正常+1,继续找下一个

🚫 无重叠的子串计数!

输入字符串s和子串p,统计p在s中出现了多少次(不允许重叠)。

  • ① s="aaaa", p="aa",无重叠结果=2
  • ② for循环里不写i++,手动控制
  • ③ 找到匹配:cnt++ 且 i += m(跳过m个)
  • ④ 没找到:i++ 继续往后找

🎉 开心消消乐!

输入一个字符串,不断消除连续3个相同字符,直到无法消除,输出最终字符串。

  • ① while(true)循环,每轮扫描整个字符串
  • ② 发现 s[i]==s[i+1] && s[i+1]==s[i+2]
  • ③ 用 s.replace(i, 3, "") 消掉
  • ④ 消掉后break从头重新扫

📚 知识点回顾

🔄 本节课知识点

  • size():求字符串长度
  • substr(i,len):截取子串
  • replace(i,len,str):替换子串
  • 有重叠计数:找到后i++
  • 无重叠计数:找到后i+=m
  • 输出调试:cout打印中间结果

🔙 之前知识点

  • for循环:遍历字符串每个位置
  • if-else:判断子串是否匹配
  • 字符串比较:substr结果==p
  • cin输入:读取字符串
  • while循环:重复消除直到稳定

🗺️ 解题逻辑线路

第1步:明确模拟目标(计数?替换?消除?)想清楚要对字符串做什么操作
↓
第2步:确定遍历方式用for循环枚举每个起始位置i
↓
第3步:用substr截取窗口子串比较s.substr(i, m) == p 就匹配成功
↓
第4步:根据规则更新计数++ / replace替换 / i+=m跳过
↓
第5步:输出结果用cout输出,出错就打印中间变量调试

💻 C++ 在线编辑器

📝 代码填空题:黄色虚线标记的 _____ 是需要你填写的部分。

📝 string_game.cpp(填空题)
1