AOJ 0101: Aizu PR

問題

Aizu PR | Aizu Online Judge

文字列中の"Hoshino"を"Hoshina"に書き換えろ

方針

"Hoshino"という文字列があったら最後の文字を'a'にする

置換関数を使わずに書く練習ということで。

cin >> nした後にgetline(cin, s)すると変な挙動をしたので、数字もgetlineした後数字に変換する仕様にした

コード

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i=0; i<(n); ++i)

int main(void){
    int n;
    string h = "Hoshino";
    string s;
    cin >> n;
    getline(cin, s);
    stringstream ss(s);
    ss >> n;
    rep(loop, n) {
        getline(cin, s);
        rep(i, s.size()){
            if(i+h.size()-1 >= s.size()) break;
            bool same = true;
            rep(j, h.size()) {
                if(s[i+j]!=h[j]) {
                    same = false;
                    break;
                }
            }
            if(same) s[i+h.size()-1] = 'a';
        }
        cout << s << endl;
    }
}

http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1899752

反省

境界チェックを怠ってREした