给定一个长度为n的字符串s,字符串由小写字母a..z组成。
小明来对这个字符串进行操作,他会从头到尾检查这个字符串,如果发现有两个相同的字母并排在一起,就会把这两个字符都删掉。小明会重复这个操作,直到没有相邻的相同字母。
你需要给出处理完成的字符串。
输入格式第一行一个整数n。
接下来一行一个长度为n的字符串s。
输出格式输出最后处理完成的字符串,有可能是空串。
样例输入19 acccabddb样例输出1
aca样例输入2
5 ababa样例输出2
ababa数据规模
对于所有数据,保证n≤100000。
答案#include#include using namespace std; const int N = 1e5+5; char Stack[N]; int top=0; char tmp; int main(){ int n; scanf("%d", &n); getchar(); //读换行符 while(n--){ scanf("%c", &tmp); if(tmp == Stack[top]) //如果与栈顶字母相等就直接出栈 --top; //相当于就是消除了两个相同的字母 else Stack[++top] = tmp; //不等就直接入栈 } Stack[top+1] = ' '; printf("%s", Stack+1); //最后这里栈是从Stack[1]开始的!!!!!! return 0; }



