【UVA 11988】Broken Keyboard 题解(链表)
  VJeqq9jk2lCR 2023年11月14日 14 0

你正在用坏了的键盘键入一段很长的文本。嗯,它没那么坏。唯一的问题 使用键盘时,有时会自动按下“home”键或“end”键 (内部)。 你没有意识到这个问题,因为你专注于文本,甚至没有打开 班长完成键入后,您可以在屏幕上看到文本(如果打开显示器)。 在中文里,我们可以称之为北居。你的任务是找到悲剧文本。

输入 有几个测试用例。每个测试用例都是一行,至少包含一个,最多包含100000个 字母、下划线和两个特殊字符“[”和“]”['表示按下“Home”键 内部,“]”表示内部按下“结束”键。输入在文件结束时终止 (共页)。 输出 对于每种情况,在屏幕上打印悲剧文本。

Sample Input This_is_a_[Beiju]_text [[]][][]Happy_Birthday_to_Tsinghua_University Sample Output BeijuThis_is_a__text Happy_Birthday_to_Tsinghua_University

思路

用一个链表存储输入的字符,遇到 [ 就将迭代器指向链表开头,遇到 ] 就将迭代器指向链表结尾。

AC代码

#include <iostream>
#include <cstdio>
#include <list>
#include <algorithm>
#include <sstream>
#define AUTHOR "HEX9CF"
using namespace std;

list<char> l;

int main()
{
    char ch;
    string line;
    list<char>::iterator it;
    while (getline(cin, line))
    {
        stringstream ss(line);
        for (it = l.begin(); ss >> ch;)
        {
            if ('[' == ch)
            {
                it = l.begin();
                continue;
            }
            if (']' == ch)
            {
                it = l.end();
                continue;
            }
            l.insert(it, ch);
        }
        for (it = l.begin(); it != l.end(); it++)
        {
            cout << *it;
        }
        cout << endl;
        l.clear();
    }

    return 0;
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
VJeqq9jk2lCR