
吐泡泡(栈)
发布日期:2021-05-07 16:48:41
浏览次数:11
分类:原创文章
本文共 1291 字,大约阅读时间需要 4 分钟。
问题链接https://ac.nowcoder.com/acm/problem/15029
#include<bits/stdc++.h>using namespace std;int main(){ char p[120]; while(cin>>p){ int l=strlen(p); stack<char> a; for(int i=0;i<l;i++){ if(a.empty()){ a.push(p[i]); }else{ if(a.top()=='O'&&p[i]=='O'){ a.pop(); } else if(a.top()=='o'&&p[i]=='o'){ a.pop(); if(!a.empty()&&a.top()=='O'){ a.pop(); }else{ a.push('O'); } } else{ a.push(p[i]); } } } char k[120]; int t=0; while(!a.empty()){ k[t++]=a.top(); a.pop(); } for(int i=t-1;i>=0;i--){ cout<<k[i]; } cout<<endl; } return 0;}
想整理的几点:
1.对于一个字符串的输入输出
char型可以直接用cin cout,也可以用gets();string用getline(cin,a);
2.对于stl中栈的简单应用 stack a;
- a.push() 入栈,将元素加到栈顶
- a.top() 返回栈顶元素
- a.pop() 删除栈顶元素,不返回
- a.empty() 判断栈中是否为空,为空返回true
- a.size() 返回栈中元素的个数
对于题目,就是将oO气泡输入进数组,然后通过入栈出栈的操作,如果是两个小气泡,就合成大气泡,再在栈顶调出一个元素继续判断是不是大气泡,如果是就破掉。同理判断到两个大气泡直接破掉。最后再用数组完成一次倒序,把栈底变成序列首。
发表评论
最新留言
很好
[***.229.124.182]2025年03月30日 17时52分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python:面向对象
2019-03-04
Python练习题 :随机生成一批数
2019-03-04
Spring源码:prepareBeanFactory(beanFactory);方法
2019-03-04
Spring源码:initApplicationEventMulticaster源码解析
2019-03-04
AcWing 786: 第k个数
2019-03-04
AcWing 828. 模拟栈
2019-03-04
AcWing 849. Dijkstra求最短路 I(Dijkstra)
2019-03-04
AcWing 4. 多重背包问题(带有个数限制的完全背包问题dp)
2019-03-04
添加Selinux权限
2019-03-04
ifconfig网络配置信息解析
2019-03-04
(2019.9.10测试可用)如何在Windows的cmd中使用ls命令
2019-03-04
债券中的久期是什么意思
2019-03-04
MA、WMA、EMA、EXPMA区别及公式详述
2019-03-04
阿里云云解析DNS各种概念深度剖析
2019-03-04
(20200328已解决)从docker容器内复制文件到宿主机
2019-03-04
理解Docker ulimit参数
2019-03-04
Factor Exposure因子暴露
2019-03-04
理解Python系统下的时间格式
2019-03-04