牛客15029数泡泡

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
小鱼儿吐泡泡,嘟嘟嘟冒出来。小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o"。
两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉。
(是的你没看错,小气泡和大气泡不会产生任何变化的,原因我也不知道。)
例如:ooOOoooO经过一段时间以后会变成oO。
输入描述:
数据有多组,处理到文件结束。
每组输入包含一行仅有’O’与’o’组成的字符串。
输出描述:
每组输出仅包含一行,输出一行字符串代表小鱼儿吐出的泡泡经过融合以后所剩余的泡泡。
示例1
输入
复制
ooOOoooO
输出
复制
oO
说明
自左到右进行合并
备注:
对于100%的数据,
字符串的长度不超过100。

题意
通过题意,可将输入字符串分成单个字符,每个字符逐个输入,且每次输入对字符串产生的变化只与该字符相邻的元素有关,根据这个特点,我们很容易看出这是一个简单的栈模拟问题。

解题思路:
1、栈中无元素或栈顶元素与输入元素不相同时,将输入元素压入栈。
2、当栈非空时,判断栈顶元素是否为小泡泡‘o’且输入元素也为小泡泡,这时将栈顶元素出栈,此时并不能将合成的大泡泡’O’直接压入栈中,因为可能栈顶的小泡泡出栈后,栈顶变成了大泡泡,这时需要将大泡泡消去,若栈顶不为大泡泡时,将大泡泡压入栈中。
3、若输入元素和栈顶元素同为大泡泡时,将栈顶元素出栈。
4、将栈顶剩余元素逐个出栈,逆序输出结果。

学习总结
对应于栈与队列的学习最初的基础是要我们做好引用,那最关键的就是对于个函数使用的熟悉头文件也要仔细钻研有了c为开头c++确实易懂快速上手就是作为一个用惯<stdio.h>的弱子还不习惯大量头文件的引用

话不多说,对应解释全写在代码里了待本蒟蒻出代码

#include<bits/stdc++.h>//万能头文件,一般还是老老实实用iosterm satck string吧
using namespace std;
int main(){string s;//定义字符串1while(cin >> s){stack<char> st;//定义栈的类型为字符串string str;//定义字符串2(空的,待输入)st.push(s[0]);//st为该栈,输入内容字符串sfor(int i = 1; i < s.length(); i++)//长度作为次数(\0不会被记入){            if(st.empty() || st.top() != s[i]){st.push(s[i]);//不一样就压入continue;   }if(!st.empty()&&st.top()==s[i]&&s[i]=='o'){st.pop();//如果栈顶不为空(有O或o),栈顶与输入的新字符相同且为o的情况下就删去栈顶字符if(!st.empty()&&st.top()=='O') st.pop();//已知之前的两个oo合体为O,在此函数体内直接判断相等为O就再删去else st.push('O');//不一样则输该有的O}else if(!st.empty()&&st.top()==s[i]&&s[i]=='O'){st.pop();//直接删}}while(!st.empty())//将栈st倒入str中{    str+=st.top();st.pop(); }for(int i=(int)str.length()-1;i>=0;i--)//之前输入的字符被被压入栈底,因此要倒着输出(栈顶的数字最大str【i】i最大的在栈顶)不然变成Oo的答案cout<<str[i];cout<<endl;   }   }
``

牛客15029数泡泡相关推荐

  1. 牛客网 A-吐泡泡 栈的模拟

    链接:https://www.nowcoder.com/acm/contest/74/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  2. 刷题记录:牛客NC15029吐泡泡

    传送门:牛客 小鱼儿吐泡泡,嘟嘟嘟冒出来.小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o". 两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉. (是的 ...

  3. 牛客 - 合约数(树上启发式合并)

    题目链接:点击查看 题目大意:给出一棵树,规定 y 是 x 的合约数是指 y 是合数且 y 是 x 的约数,设 f[ i ] 是以 i 为根节点时,子树内关于权值 val[ i ] 的合约数个数,求出 ...

  4. #牛客网 吐泡泡 (栈)

    题目描述 小鱼儿吐泡泡,嘟嘟嘟冒出来.小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o". 两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉. (是的你没 ...

  5. 洛谷or牛客数据结构+算法

    栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...

  6. 数独挑战(牛客网 2019年华南理工大学程序设计竞赛(春季赛))

    链接:https://ac.nowcoder.com/acm/contest/625/E 来源:牛客网 数独是一种填数字游戏,英文名叫 Sudoku,起源于瑞士,上世纪 70 年代由美国一家数学逻辑游 ...

  7. 牛客网 15029 (栈)

    链接:https://ac.nowcoder.com/acm/problem/15029 来源:牛客网 小鱼儿吐泡泡,嘟嘟嘟冒出来.小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡&qu ...

  8. 牛客每日练习----圆圈​​​​​​​,TaoTao要吃鸡,吐泡泡

    我喜欢给自己压力,必须得定一个很高的目标,逼自己朝着这个目标前进,不管会不会实现,都是一个动力.                                      ----喻言 链接:http ...

  9. 牛客假日团队赛5 F 随机数 BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)...

    链接:https://ac.nowcoder.com/acm/contest/984/F 来源:牛客网 随机数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

最新文章

  1. springMVC源码学习之:springMVC响应请求的几种方法
  2. 郭毅可教授在线受聘清华大学杰出访问教授并举行学术报告会
  3. 74HC595的使用
  4. [云炬创业学笔记]第一章创业是什么测试8
  5. 【内核驱动】 在内核源码中添加第一个驱动程序
  6. URI Is Not Registered
  7. 干货素材|UI设计师需要了解的APP弹窗模板
  8. 手机运行内存越大就越好吗?4GB与8GB的差距真的很明显吗?
  9. TCP/IP学习笔记(3)----IP,ARP,RARP协议
  10. C++11中移动语义(std::move)和完美转发(std::forward)
  11. 遥感高光谱分类文献阅读:Exploring Hierarchical Convolutional Features for Hyperspectral Image Classification
  12. 海康威视ivms-4200图文说明
  13. java怎么解析mdb文件_java解析MDB文件的方法,已经写成公用方法
  14. 72+常用Axure交互原型免费下载
  15. 用BILSTM+CRF模型进行命名实体识别
  16. Mac安装HomeBrewHomeBrew安装yarn
  17. 室内地图导航功能接入流程
  18. 爬虫项目十八:用Python对拉钩网全部城市所有招聘信息爬取
  19. 《Java核心技术》学习笔记——第8章 泛型程序设计
  20. [面试] 各大IT公司校园招聘程序猿笔试、面试题集锦

热门文章

  1. 互联网寒冬,如何花三个月东山再起........
  2. SV环境搭建基础知识整合①
  3. 品牌传播之广告记忆效果研究
  4. 电源硬件设计----线性调压器与LDO
  5. 关于hover改变其他元素
  6. layui显示分页,搜索后重置分页
  7. 训练误差与泛化误差的说明
  8. 学生管理系统登录部分
  9. FANUC机器人_三点法设置工具坐标系的具体方法步骤(图文)
  10. 小波阈值去噪的原理及程序