HNUSTOJ-1437 无题
1437: 无题
时间限制: 1 Sec 内存限制: 128 MB提交: 268 解决: 45
[提交][状态][讨论版]
题目描述
tc在玩一个很无聊的游戏:每一次电脑都会给一个长度不超过10^5的字符串,tc每次都从第一个字符开始,
如果找到两个相邻相一样的字符,就会把它们删除掉,然后再重新从第一个字符开始,直到不能找到这样的字符,
这样tc就得胜了。 你能帮助tc吗?
输入
多组数据,每组一行字符。
输出
输出最后的字符串,占一行。
样例输入
abccbad
样例输出
d
#include<iostream> #include<cstring> #include<cstdio> #include<deque> using namespace std; const int N = 100000 + 5; char ch[N]; char str[N]; int main(){ while(fgets(str, N, stdin) != NULL){ memset(ch, '\0', sizeof(ch)); int len = strlen(str), cur = 0; for(int i = 0; i < len; i++){ if(isspace(str[i])) continue; if( cur == 0 || ch[cur] != str[i]) ch[++cur] = str[i]; else if(ch[cur] == str[i]) cur--; } ch[++cur] = '\0'; puts(ch + 1); } return 0; }