P1321 单词覆盖还原

1.题目

单词覆盖还原

题目描述

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

输入格式

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

输出格式

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

样例 #1

样例输入 #1

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

样例输出 #1

4
2

提示

数据保证,3l255,字符串仅仅包含如下字符:.bgilory

2.题解

2.1 字符串函数

思路

这里不要想的太复杂,由于无论是boy还是girl四个字符都是不同的,而且保证了最终每个单词至少有一个字符没有被覆盖,所以一个字符不可能同时表示两个单词!!!
如果这里的字符和单词时一对一的关系就好办了,我们只要在当前位置和后续几个位置找是否有相应字符便能确定是否有一个独立单词了。

代码

#include <iostream>
using namespace std;

int main()
{
	string str;
	cin >> str;
	int boy = 0, girl = 0;
	for(int i = 0; i < str.length(); i++){
		if(str[i] == 'b' || (i+1 < str.size() && str[i+1] == 'o') || (i+1 < str.size() && str[i+2] == 'y')) 
			boy++;
		if(str[i] == 'g' || (i+1 < str.size() && str[i+1] == 'i') || (i+2 < str.size() && str[i+2] == 'r') ||(i+3 < str.size() && str[i+3] == 'l'))
			girl++;
	}
	cout << boy << endl << girl;
}

posted @   DawnTraveler  阅读(114)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示