uva 11988
来源:互联网 发布:日照间距算法 编辑:程序博客网 时间:2024/04/30 18:27
题目概述
你键盘的home键和end键会不定时自动按下而你并不知道,你专心打字甚至连显示器都没开,只有打完一行你才去看一眼,给出你要打的文字和home,end键自动按下的时机,求最后打出来的字
时限
1000ms/2000ms
输入
每行一个字符串,字符串中的[代表home键被按下,]代表end键被按下,输入到EOF为止
限制
1<=字符串长度<=100000;字符串中仅含字母,_,[]
输出
每行一个字符串,为最后打出来的结果
样例输入
This_is_a_[Beiju]_text
[[]][][]Happy_Birthday_to_Tsinghua_University
样例输出
BeijuThis_is_a__text
Happy_Birthday_to_Tsinghua_University
讨论
模拟,无非是考对stl的熟练度,频繁插入,首选list,没什么需要解释的
题解状态
0 KB,190 ms,C++11 4.8.2,674
题解代码
#include<algorithm>#include<cstring>#include<cstdio>#include<list>using namespace std;#define INF 0x3f3f3f3f#define MAXN 32#define memset0(a) memset(a,0,sizeof(a))list<char>type;//存储字符的链表list<char>::iterator it;//控制插入位置的迭代器 俗称光标void fun(){ char c; it = type.end();//初始时在末尾插入 while (~scanf("%c", &c) && c != '\n') {//input//每行以换行结尾 if (c == '[') it = type.begin();//遇到home键就将光标移到开头 else if (c == ']') it = type.end();//遇到end移到最后 else type.insert(it, c);//插入后光标会自动移到插入字符的后面 } it = type.begin(); while (it != type.end()) printf("%c", *it++);//output printf("\n");//output}int main(void){ //freopen("vs_cin.txt", "r", stdin); //freopen("vs_cout.txt", "w", stdout); char c; while (~scanf("%c", &c)) {//input//检查是否还有下一行输入 ungetc(c, stdin);//然后把吞进来的字符退回输入流 fun(); type.clear();//最后需要清空链表 }}
EOF
0 0
- UVA 11988
- UVA 11988
- uva 11988
- uva 11988
- UVa 11988
- uva 11988
- UVA - 11988
- UVA 11988
- [UVA]11988
- uva 11988
- Uva 11988 Broken Keyboard
- UVa 11988 ------ Broken Keyboard
- UVa-11988 悲剧文本
- UVA 11988 链表
- UVA 11988 链表
- uva 11988 Broken keyboard
- uva
- UVA
- iOS开发从入门到精通--开关按钮UISwitch控件
- Eclipse 重新定位svn资源库报错
- sqlist数据库语法
- Hadoop安装教程_单机/伪分布式配置_Hadoop2.7.2/Ubuntu14.04(转载,修改部分内容)
- POJ 2183 Bovine Math Geniuses
- uva 11988
- Yii整合ZF2中Feed模块
- 关于C/C++中const关键字的思考
- hibernate延迟加载(get和load的区别)
- js实现鼠标滚轮控制图片缩放效果的方法(转)
- Android studio value 2 (DexIndexOverflowException,OutOfMemoryError,NoClassDefFoundError错误)
- Android—记住密码功能
- 集群技术(转自百度百科)
- 摇一摇