牛客15029数泡泡
牛客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数泡泡相关推荐
- 牛客网 A-吐泡泡 栈的模拟
链接:https://www.nowcoder.com/acm/contest/74/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 刷题记录:牛客NC15029吐泡泡
传送门:牛客 小鱼儿吐泡泡,嘟嘟嘟冒出来.小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o". 两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉. (是的 ...
- 牛客 - 合约数(树上启发式合并)
题目链接:点击查看 题目大意:给出一棵树,规定 y 是 x 的合约数是指 y 是合数且 y 是 x 的约数,设 f[ i ] 是以 i 为根节点时,子树内关于权值 val[ i ] 的合约数个数,求出 ...
- #牛客网 吐泡泡 (栈)
题目描述 小鱼儿吐泡泡,嘟嘟嘟冒出来.小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡"o". 两个相邻的小泡泡会融成一个大泡泡,两个相邻的大泡泡会爆掉. (是的你没 ...
- 洛谷or牛客数据结构+算法
栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...
- 数独挑战(牛客网 2019年华南理工大学程序设计竞赛(春季赛))
链接:https://ac.nowcoder.com/acm/contest/625/E 来源:牛客网 数独是一种填数字游戏,英文名叫 Sudoku,起源于瑞士,上世纪 70 年代由美国一家数学逻辑游 ...
- 牛客网 15029 (栈)
链接:https://ac.nowcoder.com/acm/problem/15029 来源:牛客网 小鱼儿吐泡泡,嘟嘟嘟冒出来.小鱼儿会吐出两种泡泡:大泡泡"O",小泡泡&qu ...
- 牛客每日练习----圆圈,TaoTao要吃鸡,吐泡泡
我喜欢给自己压力,必须得定一个很高的目标,逼自己朝着这个目标前进,不管会不会实现,都是一个动力. ----喻言 链接:http ...
- 牛客假日团队赛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 ...
最新文章
- springMVC源码学习之:springMVC响应请求的几种方法
- 郭毅可教授在线受聘清华大学杰出访问教授并举行学术报告会
- 74HC595的使用
- [云炬创业学笔记]第一章创业是什么测试8
- 【内核驱动】 在内核源码中添加第一个驱动程序
- URI Is Not Registered
- 干货素材|UI设计师需要了解的APP弹窗模板
- 手机运行内存越大就越好吗?4GB与8GB的差距真的很明显吗?
- TCP/IP学习笔记(3)----IP,ARP,RARP协议
- C++11中移动语义(std::move)和完美转发(std::forward)
- 遥感高光谱分类文献阅读:Exploring Hierarchical Convolutional Features for Hyperspectral Image Classification
- 海康威视ivms-4200图文说明
- java怎么解析mdb文件_java解析MDB文件的方法,已经写成公用方法
- 72+常用Axure交互原型免费下载
- 用BILSTM+CRF模型进行命名实体识别
- Mac安装HomeBrewHomeBrew安装yarn
- 室内地图导航功能接入流程
- 爬虫项目十八:用Python对拉钩网全部城市所有招聘信息爬取
- 《Java核心技术》学习笔记——第8章 泛型程序设计
- [面试] 各大IT公司校园招聘程序猿笔试、面试题集锦