問題文
英大文字のみからなる長さ N の文字列 S があります。
S の連続する部分列 (入出力例をご覧ください) として ABC がいくつ含まれるかを求めてください。
入力と出力
N
S
S が連続する部分列として含む ABC の個数を出力せよ。
ACコード
#include
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
int main() {
int n;
string s;
cin >> n >> s;
int counter = 0;
// s文字列を全探索。
rep(i, n-2){
// "ABC"が連続で続いた場合、counter++。
if(s.at(i) == 'A'){
if(s.at(i+1) == 'B'){
if(s.at(i+2) == 'C') {
counter++;
}
}
}
}
cout << counter << endl;
}
つまずいたところ
コードテスト一回目にループの回数をn回に指定してエラーをはかせた。n-2回ループさせればそれ以降はループの必要はなし。
(n=10の場合、8回目で8文字目、9文字目、10文字目を調べるから)