# 題目: UVa 11988 - Broken Keyboard (a.k.a. Beiju Text)
# 題目說明
你正在用一個壞掉的鍵盤打一篇文章
其實也沒有那麼糟,唯一的問題是鍵盤會自己打 home
與 end
這種狀況叫做 Beiju
,你的目標是找到 Beiju
訊息
INPUT:
輸入一長串的字串
OUTPUT:
輸出 Beiju
訊息
# 解題方法
用 list
儲存訊息,以 it
紀錄當前輸入位置
- 當碰到
[
時,it
移到最前面 - 當碰到
]
時,it
移到最後面
# 參考程式碼
#include <iostream> | |
#include <list> | |
#include <string> | |
using namespace std; | |
int main() | |
{ | |
ios::sync_with_stdio(false); | |
cin.tie(nullptr); | |
cout.tie(nullptr); | |
string input; | |
while (getline(cin, input)) { | |
list<char> line; | |
auto it = line.begin(); | |
for (auto& i : input) { | |
if (i == '[') it = line.begin(); | |
else if (i == ']') it = line.end(); | |
else line.emplace(it, i); | |
} | |
for (auto& i : line) cout << i; | |
cout << "\n"; | |
} | |
return 0; | |
} |
# 參考資料
https://www.larrysprognotes.com/UVa%20-%2011988/