1654. Cipher Message
Time limit: 1.0 second
Memory limit: 64 MB
Memory limit: 64 MB
Müller tried to catch Stierlitz red-handed many times, but always failed because Stierlitz could ever find some excuse. Once Stierlitz was looking through his email messages. At that moment, Müller entered secretly and watched a meaningless sequence of symbols appear on the screen. “A cipher message,” Müller thought. “UTF-8,” Stierlitz thought.
It is known that Stierlitz ciphers messages by the following method.
- He deletes all spaces and punctuation marks.
- He replaces all successive identical letters by one such letter.
- He inserts two identical letters at an arbitrary place many times.
Try to restore a message as it was after the second step. For that, remove from the message all pairs of identical letters inserted at the third step.
Input
The only input line contains a message ciphered by Stierlitz. The message consists of lowercase English letters and its length is at most 200000.
Output
Output the restored message.
Sample
input | output |
---|---|
wwstdaadierfflitzzz | stierlitz |
简单的栈操作
/*78ms,557KB*/
#include <iostream>
#include <cstdio>
#include <stack>
using namespace std;
int main() {
stack<char> ch, ch2;
char a;
scanf("%c", &a);
ch.push(a);
while ((scanf("%c", &a) == 1)) {
if (ch.size() && a == ch.top()) {
ch.pop();
continue;
}
ch.push(a);
}
while (ch.size()) {
ch2.push(ch.top());
ch.pop();
}
while (ch2.size()) {
cout << ch2.top();
ch2.pop();
}
cout << endl;
return 0;
}