#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool BSC(string S1, string S2) {
stack<char> stack1, stack2;
// Processing S1
for (char c : S1) {
if (c != '#') {
stack1.push(c);
} else if (!stack1.empty()) {
stack1.pop();
}
}
// Processing S2
for (char c : S2) {
if (c != '#') {
stack2.push(c);
} else if (!stack2.empty()) {
stack2.pop();
}
}
// Comparing the contents of the stacks
if (stack1.size() != stack2.size()) {
return false;
}
while (!stack1.empty()) {
if (stack1.top() != stack2.top()) {
return false;
}
stack1.pop();
stack2.pop();
}
return true;
}
int main() {
string S1 = "abcdeg#f", S2 = "ad#bcg#def";
cout << "Original string S1: " << S1 << endl;
cout << "Original string S2: " << S2 << endl;
if (BSC(S1, S2)) {
cout << "S1 and S2 are equal after processing backspaces." << endl;
} else {
cout << "S1 and S2 are not equal after processing backspaces." << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIEJTQyhzdHJpbmcgUzEsIHN0cmluZyBTMikgewogICAgc3RhY2s8Y2hhcj4gc3RhY2sxLCBzdGFjazI7CiAgICAKICAgIC8vIFByb2Nlc3NpbmcgUzEKICAgIGZvciAoY2hhciBjIDogUzEpIHsKICAgICAgICBpZiAoYyAhPSAnIycpIHsKICAgICAgICAgICAgc3RhY2sxLnB1c2goYyk7CiAgICAgICAgfSBlbHNlIGlmICghc3RhY2sxLmVtcHR5KCkpIHsKICAgICAgICAgICAgc3RhY2sxLnBvcCgpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gUHJvY2Vzc2luZyBTMgogICAgZm9yIChjaGFyIGMgOiBTMikgewogICAgICAgIGlmIChjICE9ICcjJykgewogICAgICAgICAgICBzdGFjazIucHVzaChjKTsKICAgICAgICB9IGVsc2UgaWYgKCFzdGFjazIuZW1wdHkoKSkgewogICAgICAgICAgICBzdGFjazIucG9wKCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBDb21wYXJpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdGFja3MKICAgIGlmIChzdGFjazEuc2l6ZSgpICE9IHN0YWNrMi5zaXplKCkpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKICAgIHdoaWxlICghc3RhY2sxLmVtcHR5KCkpIHsKICAgICAgICBpZiAoc3RhY2sxLnRvcCgpICE9IHN0YWNrMi50b3AoKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHN0YWNrMS5wb3AoKTsKICAgICAgICBzdGFjazIucG9wKCk7CiAgICB9CiAgICAKICAgIHJldHVybiB0cnVlOwp9CgppbnQgbWFpbigpIHsKICAgIHN0cmluZyBTMSA9ICJhYmNkZWcjZiIsIFMyID0gImFkI2JjZyNkZWYiOwogICAgCiAgICBjb3V0IDw8ICJPcmlnaW5hbCBzdHJpbmcgUzE6ICIgPDwgUzEgPDwgZW5kbDsKICAgIGNvdXQgPDwgIk9yaWdpbmFsIHN0cmluZyBTMjogIiA8PCBTMiA8PCBlbmRsOwoKICAgIGlmIChCU0MoUzEsIFMyKSkgewogICAgICAgIGNvdXQgPDwgIlMxIGFuZCBTMiBhcmUgZXF1YWwgYWZ0ZXIgcHJvY2Vzc2luZyBiYWNrc3BhY2VzLiIgPDwgZW5kbDsKICAgIH0gZWxzZSB7CiAgICAgICAgY291dCA8PCAiUzEgYW5kIFMyIGFyZSBub3QgZXF1YWwgYWZ0ZXIgcHJvY2Vzc2luZyBiYWNrc3BhY2VzLiIgPDwgZW5kbDsKICAgIH0KICAgIAogICAgcmV0dXJuIDA7Cn0K