题目

题目解析
这是一道基础的不能再基础的栈的运用题,硬是被牛客的多组输入恶心到了!!!
具体就是入栈出栈,然后处理栈中元素即可。
直接上代码应该就能秒懂。
解题代码
#include<bits/stdc++.h>
using namespace std;
string St;
//TODO 当两个o融为O时会出现额外的消除情况
void solve_O() {
int i = St.size() - 1;
int j = St.size() - 2;
for (; i >= 0 && j >= 0; i -= 2, j -= 2) {
if (St[i] == 'O' && St[i] == St[j])
St.pop_back(), St.pop_back();
else break;
}
}
int main() {
ios::sync_with_stdio(false);
string s;
while (cin >> s) {
for (auto ch:s) {
if (ch == 'o' && !St.empty() && St.back() == 'o') {
St.back() = 'O';
solve_O();
} else if (ch == 'O' && !St.empty() && St.back() == 'O') {
St.pop_back();
} else {
St.push_back(ch);
}
}
cout << St << endl;
St.clear();
}
return 0;
}
本文介绍了一道关于栈的基础算法题的解决方法。通过简单的入栈、出栈操作,并特别处理了字符'o'变为'O'的情况,实现了字符串的有效简化。代码采用C++编写,展示了具体的实现细节。
631

被折叠的 条评论
为什么被折叠?



