制約が小さいのでなんとでもなる。C++ なら文字列の末尾を削除する関数 pop_back()
を知っていると楽だと思われる。
問題概要
エディター上で、'0'、'1'、'B' という 3 種のタイピング入力を行う。
- '0' と打つと、エディターに表示された文字列の末尾に '0' が挿入される
- '1' と打つと、エディターに表示された文字列の末尾に '1' が挿入される
- 'B' と打つと、エディターに表示された文字列の末尾の文字が削除される (空文字列であるときは何もしない)
タイピング時の一連の入力に関する情報が文字列 として与えられる。最終的なエディター上の文字列を求めよ。
制約
考えたこと
C++ では、答えを表す文字列変数を res
とすると、次のように実装できる。
- 操作 '0':
res += '0'
- 操作 '1':
res += '1'
- 操作 'B' (空文字列でない場合):
res.pop_back()
これらを順に処理していけばよい。なお、res
が空文字列であるかどうかは、たとえば res.size() > 0
(長さが正であること) によって判定できる。
コード
#include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; string res = ""; for (auto c : S) { if (c == '0' || c == '1') res += c; else if (res.size() > 0) res.pop_back(); } cout << res << endl; }