問題
1つの単語 W と文章 T が与えられ、T の中にある W の数を出力するプログラムを作成する問題。
使ったもの
std::transform
: すべての要素に関数を適用する。algorithm
のインクルードが必要。
コード
#include <iostream>
#include <algorithm>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main() {
cin.tie(0);
ios_base::sync_with_stdio(false);
string W, T;
int cnt=0;
cin >> W;
transform(W.begin(), W.end(), W.begin(), ::toupper);
while (1) {
cin >> T;
if (T == "END_OF_TEXT") break;
transform(T.begin(), T.end(), T.begin(), ::toupper);
if (W == T) cnt++;
}
cout << cnt << endl;
return 0;
}
感想
- C++ の日本語版リファレンス 1 の読み方がわからん……パラメータってどこ見たらいいんだ。
- 最初WもTもすべて大文字にしてから比較しようとしていたら、テストケースに小文字の
end_of_text
という入力があってそこで入力が止まってしまい WA になってしまった。今回は テストケース が見られる問題だったからバグに気づけたが、そうじゃない状況の方が多いから戦慄した。標準入力は操作する前に判定する癖をつけたいと思った。