思路:数据结构的题目,模拟栈的操作:若栈为空,则将原串的字符入栈,若栈不为空且栈顶元素与原串中的相同,则出栈;新入栈的元素需同之前的比较,若相同都出栈。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 250009;
char s[N];
char ans[N];
int main(void)
{
scanf("%s", s);
int len, i, j;
len = strlen(s);
for (i = 0, j = -1; i < len; ++i) {
if (j == -1 || ans[j] != s[i])
ans[++j] = s[i];
else if (ans[j] == s[i]) {
j--;
}
while (j-1 >= 0 && ans[j] == ans[j - 1])
j--;
}
ans[j+1] ='\0';
printf("%s\n", ans);
return 0;
}