题目描述
一个长度为 l(3≤l≤255) 的字符串中被反复贴有 boy
和 girl
两单词,后贴上的可能覆盖已贴上的单词(没有被覆盖的用句点表示),最终每个单词至少有一个字符没有被覆盖。问贴有几个 boy 几个 girl?
输入格式
一行被被反复贴有boy和girl两单词的字符串。
输出格式
两行,两个整数。第一行为boy的个数,第二行为girl的个数。
输入输出样例
输入 #1复制
......boyogirlyy......girl.......
输出 #1复制
4 2
思路:
捕捉到boy或girl的首字母的时候,往下继续捕捉到原来单词字母的时候,“或”起来避免重复计数。
其次,最后一个单词一定是完整的,利用这一点展开for循环
AC代码如下:
#include <iostream>
using namespace std;
int main()
{
int boy=0,girl=0,n;
string a;
cin>>a;
n=a.length();
for(int i=0;i<n-2;i++){
boy=boy+(a[i]=='b'||a[i+1]=='o'||a[i+2]=='y');
}
for(int i=0;i<n-3;i++){
girl=girl+(a[i]=='g'||a[i+1]=='i'||a[i+2]=='r'||a[i+3]=='l');
}
cout<<boy<<endl<<girl;
return 0;
}