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;
}
}
}