题目描述
我有一个长度为 l 的字符串,最开始时,这个字符串由 l 个句号(.)组成。
我在这个字符串中,将多次把 boy 或者 girl 两单词,依次贴到这个字符串中。
后贴上单词,会覆盖之前贴上的单词,或者覆盖句号。最终,每个单词至少有一个字符没有被覆盖。
请问,一共贴有几个 boy 几个 girl?
输入格式
一行被反复贴有 boy 和 girl 两单词的字符串。
输出格式
两行,两个整数。第一行为 boy 的个数,第二行为 girl 的个数。
输入输出样例
输入 #1复制
......boyogirlyy......girl.......
输出 #1复制
4 2
说明/提示
数据保证,3≤l≤255,字符串仅仅包含如下字符:.bgilory。
题解
#include<iostream>
#include<string>
using namespace std;
int main(){
int boy=0,girl=0;
string line;
cin>>line;
for(int i=0;i<line.length();i++)
{
if(line[i]=='.')continue;
if(line[i]=='b')boy++;
if(line[i]=='o'&&line[i-1]!='b')boy++;//o不可能出现在第2位,不会出现数组下标越界的情况.
if(line[i]=='y'&&line[i-1]!='o'&&line[i-2]!='b')boy++;//y不可能出现在第三位.
if(line[i]=='g')girl++;
if(line[i]=='i'&&line[i-1]!='g')girl++;//r,i,l情况同上,不会出现数组下标越界的情况.
if(line[i]=='r'&&line[i-1]!='i'&&line[i-2]!='g')girl++;
if(line[i]=='l'&&line[i-1]!='r'&&line[i-2]!='i'&&line[i-3]!='g')girl++;
}
cout<<boy<<endl;
cout<<girl<<endl;
return 0;
}
1万+






