whywhy 为什么这个代码运行错误TAT


大牛帮帮
#include<bits/stdc++.h>
using namespace std;
int main(){
int boy=0,girl=0;
string l;
scanf("%s",&l);
for(int i=0;i<l.size();i++){
if(l[i]=='b'||l[i+1]=='o'||l[i+2]=='y') boy++;
if(l[i]=='g'||l[i+1]=='i'||l[i+2]=='r'||l[i+3]=='l') girl++;
}
printf("%d\n%d",boy,girl);
return 0;
}
题目描述
我有一个长度为 l 的字符串,最开始时,这个字符串由 l 个句号(.)组成。
我在这个字符串中,将多次把 boy 或者 girl 两单词,依次贴到这个字符串中。
后贴上单词,会覆盖之前贴上的单词,或者覆盖句号。最终,每个单词至少有一个字符没有被覆盖。
请问,一共贴有几个 boy 几个 girl?
输入格式
一行被反复贴有 boy 和 girl 两单词的字符串。
输出格式
两行,两个整数。第一行为 boy 的个数,第二行为 girl 的个数。
输入输出样例
输入
......boyogirlyy......girl.......
输出
4
2
说明/提示
数据保证,3≤l≤255,字符串仅仅包含如下字符:.bgilory。