当前位置 博文首页 > 可惜浅灰的博客:list应用:UVA11988 破损的键盘
题目描述:
键盘上的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