for
文で隣接する要素を見ながら処理していく系の問題
問題概要
長さ の文字列 が与えられる。
を左から見ていき、文字列 "joi" が含まれるならば、これを "JOI" に変換していく処理を繰り返す。操作後の文字列を出力せよ。
解法
次のように考えるとよいでしょう。 の 文字目を順に見ていき、もし
- の 文字目が 'j'
- の 文字目が 'o'
- の 文字目が 'i'
であるならば、これらをそれぞれ 'J', 'O', 'I' にしていきます。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; string S; cin >> N >> S; for (int i = 0; i + 2 < N; ++i) { if (S[i] == 'j' && S[i+1] == 'o' && S[i+2] == 'i') { S[i] = 'J'; S[i+1] = 'O'; S[i+2] = 'I'; } } cout << S << endl; }