看了题解中间都是用栈写的,我来补充一个用队列写的。
前面都是一样的,判断,压入弹出。但是到后面就是用队列的好处,直接从头部出去,不需要额外的空间。
另外,for (char &c : str)是C11的新语法,意为对str中所有元素遍历一遍,将每个元素依次赋值(或引用)给c进行循环
代码如下
#include<iostream> #include<deque> #include<string> using namespace std; deque<char> st; string str; int main() { while (cin >> str) { for (char &c : str) { if (st.empty()||st.back()!=c) st.push_back(c); else{ if (c == 'o') { st.pop_back(); if (!st.empty() && st.back() == 'O') st.pop_back(); else st.push_back('O'); } else st.pop_back(); } } while (!st.empty()) { cout << st.front(); st.pop_front(); } } }