codevs 4650 破损的键盘(stl)

本文介绍了一道编程题,题目中提到的键盘上'home'和'end'键故障,导致输入的文本中出现'[', ']'字符。挑战在于,需要在不查看显示器的情况下,通过编程预测文本内容。输入为包含字母和'[', ']'的字符串,输出应为修正后的字符串。作者使用STL中的双端链表来解决此问题,代码实现中提到了home键对应头插入,end键对应尾插入的操作。" 111960346,10545711,使用TensorFlow实现MNIST手写数字CNN分类,"['深度学习', '神经网络', '图像识别', 'Python', '机器学习']
摘要由CSDN通过智能技术生成

*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/ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值