洛谷C++ 1321

题目描述

一个长度为 l(3\le l\le255)l(3l255) 的字符串中被反复贴有 boy 和 girl 两单词,后贴上的可能覆盖已贴上的单词(没有被覆盖的用句点表示),最终每个单词至少有一个字符没有被覆盖。问贴有几个 boy 几个 girl?

输入格式

一行被被反复贴有boy和girl两单词的字符串。

输出格式

两行,两个整数。第一行为boy的个数,第二行为girl的个数。

输入输出样例

输入 #1
......boyogirlyy......girl.......
输出 #1
4
2




答案:

#include<iostream>
#include<cstring>
using namespace std;
int main(){
  int cnt1=0,cnt2=0;//定义两个整型变量,记录字符串中"boy"和"girl"所出现的次数.
  string arr;//定义并输入字符串.
  cin>>arr;
  int a=arr.length();//获取字符串arr的长度.
  for(int i=0;i<a;i++){//对字符串arr中的每1项进行判断.
    if(arr[i]=='b' ){//如果arr[i]是"boy"中的1项,记录"boy"出现的次数的变量加1.
      cnt1++;
    }
    else if(arr[i]=='o' && arr[i-1]!='b'){//如果arr[i]是"boy"中的1项,且arr[i]并不与前1项属于同1个单词,记录"boy"出现的次数的变量加1.
      cnt1++;
    }
    else if(arr[i]=='y' && arr[i-1]!='o'){//如果arr[i]是"boy"中的1项,且arr[i]并不与前1项属于同1个单词,记录"boy"出现的次数的变量加1.
      cnt1++;
    }
    if(arr[i]=='g' ){//如果arr[i]是"girl"中的1项,记录"girl"出现的次数的变量加1.
      cnt2++;
    }
    else if(arr[i]=='i' && arr[i-1]!='g'){//如果arr[i]是"girl"中的1项,且arr[i]并不与前1项属于同1个单词,记录"girl"出现的次数的变量加1.
      cnt2++;
    }
    else if(arr[i]=='r' && arr[i-1]!='i'){//如果arr[i]是"girl"中的1项,且arr[i]并不与前1项属于同1个单词,记录"girl"出现的次数的变量加1.
      cnt2++;
    }
    else if(arr[i]=='l' && arr[i-1]!='r'){//如果arr[i]是"girl"中的1项,且arr[i]并不与前1项属于同1个单词,记录"girl"出现的次数的变量加1.
      cnt2++;
    }
  }
  cout<<cnt1<<endl<<cnt2;//输出"boy"与"girl"所出现的次数,并用换行隔开.
  return 0;
}

posted @ 2021-06-02 19:29  孙圣杰  阅读(172)  评论(0)    收藏  举报