#题目链接:https://ac.nowcoder.com/acm/problem/15029
#题目描述
输入仅由'o'和'O'构成的字符串,从左到右扫描,'o'和'o'相邻则生成'O','O'和'O'相邻则删去。输出最后剩下的字符串。
注意:文件输入数据,直到遇见文件结束符输入结束。
#代码实现
using namespace std;
deque<char> st;
int main(void)
{
string s;
while (cin >> s)
{
for (int i = 0; i < (int)s.length(); i++)
{
if (!st.empty() && st.back() == 'o' && s[i] == 'o')
{
if (!st.empty())
{
st.pop_back();
}
if (!st.empty() && st.back() == 'O')//若访问空栈,程序会异常终止
{
st.pop_back();
}
else
{
st.push_back('O');
}
}
else if (!st.empty() && st.back() == 'O' && s[i] == 'O')
{
st.pop_back();
}
else
{
st.push_back(s[i]);
}
}
while (!st.empty())
{
printf("%c", st.front());
st.pop_front();
}
puts("");
}
return 0;
}