题解 | 吐泡泡
吐泡泡
https://www.nowcoder.com/practice/f86fa2221c094b3d8d1fc79bae450d96
题干解读:输入T组字符串,每组输入一个字符串,遵从一下规则:每两个o合成一个O,每两个O消失,要求输出最后的结果.
思路:
使用栈来对每个输入的字符进行匹配,每两个o则合成一个O,每两个O则弹出栈顶元素;
特别要注意的是,合成O时要注意栈顶元素弹出后的栈顶元素是否为O,如果是则要消去.
#include <iostream>
#include<stack>
#include<unordered_map>
using namespace std;
int main() {
int t;
cin>>t;
unordered_map<char,char> m1;
unordered_map<char,char> m2;
m1.emplace('o','o');
m2.emplace('O','O');
while(t--){
string s;
cin>>s;
stack<char> stk;
for(char i:s){
if(stk.empty()){
stk.push(i);
}else{
if(m1[stk.top()] == i){
stk.pop();
if(stk.empty()){
stk.push('O');
}else{
if(m2[stk.top()] == 'O'){
stk.pop();
}
}
}else if(m2[stk.top()] == i){
stk.pop();
}else{
stk.push(i);
}
}
}
stack<char> ans;
while(!stk.empty()){
ans.push(stk.top());
stk.pop();
}
while(!ans.empty()){
cout<<ans.top();
ans.pop();
}
cout<<endl;
}
}


查看11道真题和解析