UVa 11988 ------ Broken Keyboard

来源:互联网 发布:acrobat for mac安装 编辑:程序博客网 时间:2024/04/30 23:12

题目:UVa 11988


/*UVa 11988 ------ Broken Keyboard*/#include <cstdio>#include <cstring>const int maxn = 100000 + 5;int cur, last, next[maxn];char s[maxn];int main(){while (scanf("%s", s + 1) == 1){//从s[1]开始存取//初始化工作int len = strlen(s + 1);last = cur = 0;next[0] = 0;//将字符串利用next串起来,其中cur为当前光标的位置for (int i = 1; i <= len; ++i){char ch = s[i];//获取当前字符if ('[' == ch)cur = 0; //cur标记当前光标位置,遇到[则标记为0else if (']' == ch)cur = last;//cur标记当前位置,last标记最后一个字母的位置,遇到]则将cur设置为lastelse{//普通字母,则在cur之后,next[cur]之前插入i位置的字符(链表的插入)next[i] = next[cur];next[cur] = i;//链表的插入if (cur == last)last = i;//若在尾部插入则更新尾指针cur = i; //移动光标}}//for(i)for (int i = next[0]; i != 0; i = next[i]){printf("%c", s[i]);}//for(i)puts("");}//while(s)return 0;}


0 0
原创粉丝点击