UVA11988
来源:互联网 发布:java 两list合并 编辑:程序博客网 时间:2024/06/05 22:52
Description
You’re typing a long text with a broken keyboard. Well it’s not so badly broken. The only problem
with the keyboard is that sometimes the “home” key or the “end” key gets automatically pressed
(internally).
You’re not aware of this issue, since you’re focusing on the text and did not even turn on the
monitor! After you finished typing, you can see a text on the screen (if you turn on the monitor).
In Chinese, we can call it Beiju. Your task is to find the Beiju text.
Input
There are several test cases. Each test case is a single line
containing at least one and at most 100,000 letters, underscores and
two special characters ‘[’ and ‘]’. ‘[’ means the “Home” key is
pressed internally, and ‘]’ means the “End” key is pressed internally.
The input is terminated by end-of-file (EOF).
Output
For each case, print the Beiju text on the screen.
Sample Input
This_is_a_[Beiju]_text
[[]][][]Happy_Birthday_to_Tsinghua_University
Sample output
BeijuThis_is_a__text
Happy_Birthday_to_Tsinghua_University
Explanation
数据范围大,直接用数组存下插入元素会移动大量元素
用数组模拟链表,为了方便,设置头节点(即在第一个节点前设置一个虚拟的节点)
然后按照要求模拟移动光标操作即可
Code
#include <stdio.h>#include <string.h>const int maxn = 100000 + 5;int last, cur, next[maxn];//cur为光标前的位置,next[i]表示下标为i的字符的下一个位置的下标char s[maxn];int main(){ while(~scanf("%s",s+1)){ int n = strlen(s+1); last = cur = 0; next[0] = 0; for(int i = 1; i <= n; i++){ char ch = s[i]; if(ch == '[') cur = 0; else if(ch == ']') cur = last; else{ next[i] = next[cur]; next[cur] = i; if(cur == last) last = i;//更新last cur = i;//移动光标 } } for(int i = next[0]; i != 0; i = next[i]) printf("%c",s[i]); printf("\n"); } return 0;}
- uva11988
- uva11988
- UVA11988
- UVA11988
- UVa11988
- UVa11988
- UVa11988
- uva11988
- UVA11988
- uva11988(链表)
- uva11988 链表
- 链表指针uva11988
- UVA11988 Broken Keyboard
- uva11988 broken keyboard
- UVA11988 Broken Keyboard 链表
- UVa11988(linked list)
- Uva11988 Broken Keyboard
- 数组链表-----uva11988
- React学习笔记_css module
- ConcurrentHashMap的实现 get put remove 详解
- 吸顶条
- ZXECS-IBX1000综合业务交换
- 降维——局部线性嵌入(LLE)
- UVA11988
- 在ros中配置opencv编译环境环境
- KVM更改虚拟机默认存储路径
- 指针指向紧邻对象所占空间的下一个位置
- 关于VS2017配置GLFW的问题
- React学习笔记_常用工具 插件使用
- 存储函数
- java读取excle文件内容示例
- 数量不定的模板参数、auto、for的新形式、reference