当前位置 博文首页 > 可惜浅灰的博客:list应用:UVA11988 破损的键盘

    可惜浅灰的博客:list应用:UVA11988 破损的键盘

    作者:[db:作者] 时间:2021-09-05 19:10

    题目描述:

    键盘上的Home键和End键出了问题,会不定时的按下。你却不知道此问题,而是专心致志地打稿子,甚至显示器都没开。当你打开显示器之后,展现你面前的数一段悲剧文本。你的任务是在显示器打开前计算出这段悲剧的文本。 给你一段按键的文本,其中'['表示Home键,']'表示End键,输入结束标志是文件结束符

    解题思路:

    ? ? 1、先用一个容器把输入的字符记录好,然后从此基础上再做操作,输入不需要变动;用string。

    ? ? 2.输入‘[’时,后面的内容跳转到字符串头部,输入']'时,跳转到字符串尾部,插入操作适合用l? ? ? ist。

    ? ? 3、将string中的输入逐字符拷贝到list中,若遇到 ‘[' 或者' ]' ,将迭代器移动到链表头部或尾部

    代码实现:

    #include <iostream>
    using namespace std;
    #include <string>
    #include <list>
    list<char> L;
    void slove(const string& input)
    {
        auto listptr = L.begin();
        for (int i = 0; i < input.length(); i++)
        {
            if (input[i] == '[')
            {
                listptr = L.begin();
            }
            else if (input[i] == ']')
            {
                listptr = L.end();
            }
            else
            {
                L.insert(listptr, input[i]);
            }
        }
        for (auto it = L.begin(); it != L.end(); it++)
        {
            cout << *it;
        }
        cout << endl;
        L.clear();
    }
    
    int main()
    {
        string input;
        while (cin >> input)
        {
            slove(input);
        }
        return 0;
    }
    

    cs
    下一篇:没有了