ECUST and ecust

ECUST and ecust

ECUST and ecust

题目介绍

小花梨来到了一家面包店,发现这家的面包有一个特点:在每个面包上都有一个字母。
小花梨想买5个面包希望可以集齐"ECUST"或者"ecust"。
有强迫症的小花梨希望买的面包要么全是大写字母,要么全是小写字母。
在无法集齐"ECUST"和"ecust"的情况下,只要能集齐这五种字母(不区分大小写),它也会买下来。
现在告诉你面包店的所有面包上面的字母,请你告诉小花梨是否可以集齐"ECUST"或者"ecust"或者集齐这五种字母。

输入

第一行一个整数T,表示有T组数据(1≤T≤1000)
对于每组数据,输入第一行,只有一个整数n(1≤n≤60),表示面包店的面包数目
第二行输入一行长度为n的字符串,只由大写字母和小写字母组成,表示面包店每个面包上面的字母

样例输入

5
5
ECUST
5
ecust
10
CcEeUuSsTt
5
cuEst
7
Aaccefg

输出

对于每一组数据,先输出"Case x: “(不含引号)
x表示第x组测试数据,从1开始编号
如果只能集齐"ECUST”,那就输出"ECUST"
如果只能集齐"ecust",那就输出"ecust"
如果两者都可以集齐,那就输出"ECUST and ecust"
如果两者都不能集齐,但是可以集齐这五种字母,输出"Yes"
其余情况输出"No"

样例输出

Case 1: ECUST
Case 2: ecust
Case 3: ECUST and ecust
Case 4: Yes
Case 5: No

代码

#include<iostream> 
#include<string>
using namespace std;
string str1 = "ECUST";
string str2 = "ecust";
bool judge1(string s)
{
	int flag = 0;
	for (int i = 0; i < str1.length(); i++)
	{
		for (int j = 0; j < s.length(); j++)
		{
			if (s[j] == str1[i])
			{
				flag = 1; break;
			}

		}
		if (flag == 0)
		{
			return false;
		}
		flag = 0;
	}
	return true;
}
bool judge2(string s)
{
	int flag = 0;
	for (int i = 0; i < str2.length(); i++)
	{
		for (int j = 0; j < s.length(); j++)
		{
			if (s[j] == str2[i])
			{
				flag = 1; break;
			}
		}
		if (flag == 0)
		{
			return false;
		}
		flag = 0;
	}
	return true;
}
bool judge3(string s)
{
	int flag = 0;
	for (int i = 0; i < str1.length(); i++)
	{
		for (int j = 0; j < s.length(); j++)
		{
			if (s[j] == str1[i] || s[j] == str2[i])
			{
				flag = 1; break;
			}
		}
		if (flag == 0)
		{
			return false;
		}
		flag = 0;
	}
	return true;
}
int main()
{
	int t;   //there are t groups of data
	int x;    //length of each group of data
	string s;   //data
	cin >> t;
	int* p = new int[t];
	//int p[t] = { 0 };
	for (int i = 1; i <= t; i++)
	{
		cin >> x >> s;
		if (judge1(s) && !judge2(s)) //大写成立同时小写不成立
		{
			p[i] = 1;
		}
		else if (!judge1(s) && judge2(s)) // o写成立同时da写不成立
		{
			p[i] = 2;
		}
		else if (judge1(s) && judge2(s)) //大写成立同时小写成立
		{
			p[i] = 3;
		}
		else if (!judge1(s) && !judge2(s) && judge3(s))//纯大小写都不成立但是两者互补成立
		{
			p[i] = 4;
		}
		else if (!judge1(s) && !judge2(s) && !judge3(s))//纯大小写都不成立两者互补也不成立
		{
			p[i] = 5;
		}
		
	}
	for (int i = 1; i <= t; i++)
	{
		cout << "Case " << i << ": ";
		switch (p[i])
		{
		case 1: cout << "ECUST" << endl; break;
		case 2: cout << "ecust" << endl; break;
		case 3:cout << "ECUST and ecust" << endl; break;
		case 4:cout << "Yes" << endl; break;
		case 5:cout << "No" << endl; break;
		}
	}
}

Alt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值