洛谷 P1321 单词覆盖还原

单词覆盖还原

题目描述

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

输入格式

一行被反复贴有 boygirl 两单词的字符串。

输出格式

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

样例 #1

样例输入 #1

......boyogirlyy......girl.......

样例输出 #1

4
2

提示

数据保证, 3 ≤ l ≤ 255 3\le l\le255 3l255,字符串仅仅包含如下字符: .bgilory \texttt{.bgilory} .bgilory

分析:
一开始我就想要分类讨论,直接使用if语句,但所需分的类别太多。
我们不妨先考虑boy:
有七种情况‘b’ ‘o’ ‘y’ ‘bo’ ‘by’ ‘oy’ ‘boy’,
我们并不需要一一列举,因为它们均由‘boy’变化而来。
我们可以想到||运算符,利用或运算符可以把‘boy’拆为上面7中情形。
‘gril’同理

#include<stdio.h>
#include<string.h>
char a[300];
int main()
{

	int i, anum = 0, bnum = 0, m;
	gets(a);
	m = strlen(a);//获取字符串
	for (i = 0; i < m; i++)
	{
		if (a[i] == 'b' || a[i + 1] == 'o' || a[i + 2] == 'y')
			anum++;//这段逻辑包含了上述7种情形
		if (a[i] == 'g' || a[1] == 'i' || a[i + 2] == 'r' || a[i + 3] == 'l')
			bnum++;
	}
	printf("%d\n%d", anum, bnum);
	return 0;
}

总结:分类讨论不一定要使用if语句,还可以使用||运算符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值