1.题目
单词覆盖还原
题目描述
一个长度为 \(l\) 的字符串中被反复贴有 boy
和 girl
两单词,后贴上的可能覆盖已贴上的单词(没有被覆盖的用句点表示),最终每个单词至少有一个字符没有被覆盖。问贴有几个 boy
几个 girl
?
输入格式
一行被反复贴有 boy
和 girl
两单词的字符串。
输出格式
两行,两个整数。第一行为 boy
的个数,第二行为 girl
的个数。
样例 #1
样例输入 #1
......boyogirlyy......girl.......
样例输出 #1
4
2
提示
数据保证,\(3\le l\le255\),字符串仅仅包含如下字符:\(\texttt{.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;
}
标签:boy,&&,单词,P1321,还原,str,girl,size
From: https://www.cnblogs.com/trmbh12/p/17985393