Uva 11988 手残敲键盘系列

一、题意

输入若干行字符串。表示键盘输入的字符序列。
其中'['表示光标移至开头,']'表示把光标移至末尾。
要求输出最终的字符串。

二、解析

需要插入操作,因此考虑用list。移动光标通过维护list的一个迭代器即可,用来表示插入的位置。

三、代码

#include <iostream>
#include <string>
#include <list>
using namespace std;

int main() {
    string str;
    while(cin >> str) {
        list<char> lst;
        auto pos = lst.end();
        for(char ch : str) {
            if(ch == '[') pos = lst.begin();
            else if(ch == ']') pos = lst.end();
            else pos = lst.insert(pos, ch), pos ++;
        }
        for(char ch : lst) cout << ch;
        cout << endl;
    }
}

四、归纳

  • 这题主要是复习一下list的使用,当需要频繁操作时就用list
  • pos = lst.insert(pos, x)表示将x插入到lst的pos迭代器位置,返回值pos表示的是新插入字符的迭代器位置。lst.insert(lst.begin(), x)是在开头插入;lst.insert(lst.end(), x)是在末尾插入。
Re:从零开始的刷题生活 文章被收录于专栏

一起来重刷题叭~ 由于精力有限,题意只说大概,题目细节可以点击vjudge链接查看。 题目以紫薯中的Uva例题/习题为主,有时候有些比较经典的算法也会特意从其它OJ上找题,并不一定出现在紫薯上。 噢,紫薯指——《算法竞赛入门经典(第2版)》by 刘汝佳 喜欢的小伙伴点个赞呗?不然我只能认为一直只有我一个人在自娱自乐orz....

全部评论

相关推荐

迷茫的大四🐶:???啥意思,你放几张图片糊弄牛油们?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务