前言
- 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失。
- 个人刷题练习系列专栏:个人优快云牛客刷题专栏。 牛客数据结构题目位置如下:

问题描述:
牛牛拿到了一个字符串。
他每次“点击”,可以把字符串中相邻两个相同字母消除,例如,字符串"abbc"点击后可以生成"ac"。
但相同而不相邻、不相同的相邻字母都是不可以被消除的。
牛牛想把字符串变得尽可能短。他想知道,当他点击了足够多次之后,字符串的最终形态是什么?
输入描述:
一个字符串,仅由小写字母组成。(字符串长度不大于300000)
输出描述:
一个字符串,为“点击消除”后的最终形态。若最终的字符串为空串,则输出0。
举例:
//输入:
abbc
//输出:
ac
//输入:
abba
//输出:
0
//输入:
bbbbb
//输出:
b
解法思路:
- 作为一个匹配消除的题,类似于括号匹配的题目,显然可以使用数据结构栈来完成。上章使用了结构体实现栈,因此这章本着雨露均沾的原则,则按上章所说,使用数组来完成。
- 上一章节:【牛客刷题专栏】0x04:C数据结构栈实现逆波兰表达式求值及其重点讲解
代码结果:
#include <stdio.h>
#include <string.h>
int main()
{
char chars[300000]={
0};
int topIdx=0;
int i=0;
scanf("%s",chars

本文介绍了一道牛客网的字符串消除问题,并提供了一种使用栈的数据结构解决方案。文章详细解释了解题思路,给出了正确的代码实现,并对比了一个错误示例,帮助读者理解如何避免常见陷阱。
最低0.47元/天 解锁文章
1170

被折叠的 条评论
为什么被折叠?



