codevs 4650 破损的键盘(stl)

来源:互联网 发布:linux怎么安装语言包 编辑:程序博客网 时间:2024/04/30 05:22

*PS:现学的list 打起来好心累QAQ

go to the problem–>

题目描述 Description

有一天,你需要打一份文件,但是你的键盘坏了,上面的”home”键和”end”键会时不时地按下,而你却毫不知情,甚至你都懒得打开显示器,当你打开显示器之后,出现在你的面前的是一段悲剧的文本。

输入描述 Input Description

输入只有一行,即这份文件,这份文件只包含小写字母和’[‘以及’]’,用’[‘代替”home”键,用’]’代替”end”键。

输出描述 Output Description

你的任务是在打开显示器之前,计算出这份悲剧的文档。

样例输入 Sample Input

kdg[gek]h[itj

de[co]vs

样例输出 Sample Output

itjgekkdgh

codevs

数据范围及提示 Data Size & Hint

包含多组测试数据,直到文件结束。

字符串长度小于10000个字符。

不包含空格。

双端链表,本来想着有空打打的,可是清北的老师讲了list,所以就拿来练练了QWQ。

home就是从头插入,end是从尾插入。

代码

#include<iostream>#include<list> // 双端链表 using namespace std;string a;list<char> b;list<char>::iterator f;int main(){    while(cin>>a)    {        int l=a.length();f=b.begin();        for(int i=0;i<l;++i)        {            if(a[i]=='[') f=b.begin(); //把f移到链表头部            else if(a[i]==']') f=b.end(); //把f移到链表尾部            else  b.insert(f,a[i]);  // f会随着插入而后移         }        while(!b.empty())         {            cout<<b.front();            b.pop_front();        }        cout<<'\n';    }    return 0;   }//http://www.cplusplus.com/reference/list/list/insert///http://www.cplusplus.com/reference/list/list/push_back/ 
原创粉丝点击