一、题意
输入若干行字符串。表示键盘输入的字符序列。
其中'['表示光标移至开头,']'表示把光标移至末尾。
要求输出最终的字符串。
二、解析
需要插入操作,因此考虑用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)是在末尾插入。

京公网安备 11010502036488号