AOJ 0101: Aizu PR
問題
文字列中の"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した