UVA 11988 Broken Keyboard 链表

来源:互联网 发布:诺德软件 编辑:程序博客网 时间:2024/04/26 07:51

UVAOJ时不时掉链子

点击打开题目链接

用链表模拟一下就ok了

#include <cstdio>#include <list>#include <cstring>#include <string>#include <iostream>using namespace std;int main(){    list<char> srcList, ansList;    list<char>::iterator listIt;    string str;    while (cin >> str)    {        srcList.clear();        ansList.clear();        for (int i = 0; i < str.length(); i++)  //将输入的字符串添加到链表            srcList.push_back(str[i]);        srcList.push_back(']');                 //防止漏掉最后的字符串        char preChar = '[';                 //记录前一个按键        string curStr = "";             //记录按键后面的字符串        for (listIt = srcList.begin(); listIt != srcList.end(); listIt++)   //遍历源字符串        {            if (*listIt == '[' || *listIt == ']')             //碰到按键            {                if (preChar == '[')         //Home键,插入到头部,注意插入顺序                {                    for (int i = curStr.length() - 1; i >=0 ; i--)                        ansList.push_front(curStr[i]);                }                else                //End键                {                    for (int i = 0; i < curStr.length(); i++)                        ansList.push_back(curStr[i]);                }                preChar = *listIt;      //更新上次的按键                curStr = "";            //清空字符串            }            else            {                curStr += *listIt;      //不是按键的话记录字符串            }        }        for (listIt = ansList.begin(); listIt != ansList.end(); listIt++)            cout << *listIt;        cout << endl;    }    return 0;}


0 0
原创粉丝点击