题解 P1321 【单词覆盖还原】

· · 题解

这道题使我们班考试时的一道题

当时我想得很复杂,导致我只对了1个测试点

看了正解,我想哭,发现代码超短,而且思路很简单

现在,让我见一下思路

首先,我们要有一个字符串,一个计算boy与一个计算girl的变量

用询问字符串来统计个数

如果是BOY,那要么是那一位是“b”,要么下一位是“o”

要么下一位是“y”;

同理,girl也是如此

就可以写成以下如此


    cin>>a;
    n=a.length();
    for(int i=0;i<n-2;i++)
      boy+=(a[i]=='b'||a[i+1]=='o'||a[i+2]=='y');
    for(int i=0;i<n-3;i++)
      girl+=(a[i]=='g'||a[i+1]=='i'||a[i+2]=='r'||a[i+3]=='l');

最后送上AC代码

//P1321
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<map>
#include<queue>
using namespace std;
int boy,girl,n;
string a;
int main()
{
    cin>>a;
    n=a.length();
    for(int i=0;i<n-2;i++)
      boy+=(a[i]=='b'||a[i+1]=='o'||a[i+2]=='y');
    for(int i=0;i<n-3;i++)
      girl+=(a[i]=='g'||a[i+1]=='i'||a[i+2]=='r'||a[i+3]=='l');
    cout<<boy<<endl<<girl;               
    return 0;
}