UVa11988 Broken Keyboard (a.k.a. Beiju Text)

模拟题.

但是可以借这题熟悉一下STL的list用法

首先, list有push_front 与 pop_front, 但显然, 这俩功能解决不了这个题

考虑使用迭代器和insert修改器.

查阅资料, insert插入单个元素时返回值为这个值的位置,

而且,

iterator insert( iterator pos, const T& value );

是在 pos 前插入 value

了解了这些, 不难写出程序.

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <list>
 5 using namespace std;
 6 const int HEAD = 0;
 7 const int TAIL = 1;
 8 
 9 list<char> l;string s;
10 
11 int main()
12 {
13     //freopen("11988.in", "r", stdin);
14     ios::sync_with_stdio(false);
15     char ch; list<char>::iterator it = l.begin();
16     while(cin>>s)
17     {
18         for(int i = 0; i < (int) s.size(); i++)
19         {
20             ch = s[i];
21             if(ch == '[') it = l.begin();
22             else if(ch == ']') it = l.end();
23             else it = l.insert(it, ch), it++;
24         }
25         for(it = l.begin(); it != l.end(); it++)
26             cout<<*it;
27         cout<<endl;
28         l.clear();
29     }
30     
31     return 0;
32 }

 

posted @ 2018-06-21 09:47  俺是小程  阅读(123)  评论(0编辑  收藏  举报