P1321 单词覆盖还原
一个长度为 l(3≤l≤255)l(3\le l\le255)l(3≤l≤255) 的字符串中被反复贴有 boy
和 girl
两单词,后贴上的可能覆盖已贴上的单词(没有被覆盖的用句点表示),最终每个单词至少有一个字符没有被覆盖。问贴有几个 boy 几个 girl?
输入格式
一行被被反复贴有boy和girl两单词的字符串。
输出格式
两行,两个整数。第一行为boy的个数,第二行为girl的个数。
输入输出样例
输入 #1
......boyogirlyy......girl.......
输出 #1
4
2
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int main()
{
string str;
getline(cin,str);
int sum=0,sum1=0;
for(int i=0;i<str.size() ;++i)
{
switch(str[i]){
case 'b':
{
if(str[i]=='b'&&str[i+1]=='o'&&str[i+2]=='y')
{
i+=2;
sum++;
break;
}
else if(str[i]=='b'&&str[i+1]=='o')
{
i+=1;
sum++;
break;
}
else if(str[i]=='b'){
sum++;
break;
}
}
case 'o':{
if(str[i]=='o'&&str[i+1]=='y')
{
i+=1;
sum++;
}
else if(str[i]=='o'){
sum++;
}
break;
}
case 'y': {
sum++;
break;
}
case 'g':{
if(str[i]=='g'&&str[i+1]=='i'&&str[i+2]=='r'&&str[i+3]=='l')
{
i+=3;
sum1++;
}
else if(str[i]=='g'&&str[i+1]=='i'&&str[i+2]=='r')
{
i+=2;
sum1++;
}
else if(str[i]=='g'&&str[i+1]=='i')
{
i+=1;
sum1++;
}
else if(str[i]=='g')
{
sum1++;
}
break;
}
case 'i':{
if(str[i]=='i'&&str[i+1]=='r'&&str[i+2]=='l')
{
sum1++;
i+=2;
}
else if(str[i]=='i'&&str[i+1]=='r')
{
sum1++;
i+=1;
}
else if(str[i]=='i')
{
sum1++;
}
break;
}
case 'r':{
if(str[i]=='r'&&str[i+1]=='l')
{
sum1++;
i+=1;
}
else if(str[i]=='r')
{
sum1++;
}
break;
}
case 'l':{
sum1++;
break;
}
}
}
cout<<sum<<endl;
cout<<sum1;
return 0;
}