問題
https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/9/ITP1_9_D (新しいタブで開く)
問題文
文字列 に対して、命令が与えられるので実行してね。
print a b
: から までを出力するreverse a b
: から までを逆順にするreplace a b p
: から までを で置き換える
ただし、0-indexed。
制約
- (
replace
)
サンプル
I/O 1
abcde 3 replace 1 3 xyz reverse 0 2 print 1 4
xaze
I/O 2
xyz 3 print 0 2 replace 0 2 abc print 0 2
xyz abc
考察
制約が小さめなので、そのまま頑張って実装する。
コード
int main() { string s; cin >> s; int n; cin >> n; while (n--) { string op; cin >> op; if (op == "print") { int a, b; cin >> a >> b; for (int i = a; i <= b; ++i) cout << s[i]; cout << endl; } else if (op == "reverse") { int a, b; cin >> a >> b; reverse(s.begin() + a, s.begin() + b + 1); } else { int a, b; string p; cin >> a >> b >> p; rep(i, p.size()) s[a + i] = p[i]; } } return 0; }