题解:P1321 单词覆盖还原
Mountains_OIer · · 题解
题意
我们需要统计一个字符串中 boy 和 girl 的出现次数:
-
字符串初始由
.组成,后来被boy或girl覆盖。 -
后贴的单词会覆盖之前的字符(可能是部分覆盖)。
-
每个单词至少有一个字符未被覆盖,所以我们可以通过遍历字符串来识别
boy和girl的片段。思路
由于有覆盖的情况,所以
boy和girl并不完整: -
当相邻三个字母中第一个是
b或第二个是o或第三个是y,那么说明这里有boy。 -
当相邻四个字母中第一个是
g或第二个是i或第三个是r或第四个是l,那么说明这里有girl。
最后统计 boy 和 girl 数量输出即可。
Code
#include<iostream>
#define int long long
using namespace std;
string s;
int ansboy,ansgirl;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>s;
for(int i=0;i<s.size();i++){
if(s[i]=='b'||s[i+1]=='o'||s[i+2]=='y')ansboy++;
if(s[i]=='g'||s[i+1]=='i'||s[i+2]=='r'||s[i+3]=='l')ansgirl++;
}
cout<<ansboy<<'\n'<<ansgirl;
}