题解 | 吐泡泡,这题的关键是小泡泡合成大泡泡之后还要再往前推一步,判断大泡泡会不会和前面的抵消
吐泡泡
https://www.nowcoder.com/practice/f86fa2221c094b3d8d1fc79bae450d96
#include <iostream>
#include <string>
using namespace std;
int main() {
int T;
cin>>T;
string s;
for (int i=0; i<T; i++) {
cin>>s;
int lastsize=s.size()-1;
while (s.size()!=lastsize) {
lastsize = s.size();
string a;
for (int j=0; j<s.size(); j++) {
switch (s[j]) {
case 'O':
if (a[a.size()-1]=='O') {
a.pop_back();
}
else {
a.push_back('O');
}
// cout<<a<<endl;
break;
case 'o':
if (a[a.size()-1]=='o') {
a.pop_back();
if (a[a.size()-1]=='O') {
a.pop_back();
}
else {
a.push_back('O');
}
}
else {
a.push_back('o');
}
// cout<<a<<endl;
break;
}
}
s=a;
}
cout<<s<<endl;
}
}
// 64 位输出请用 printf("%lld")