宁波工程学院2020新生校赛B - 皮(A)卡(C)皮(M)~(思维)

链接:https://ac.nowcoder.com/acm/contest/6106/B
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

最近小梁的皮卡丘迷上了一款叫做ACM的游戏,它想把小梁的所有密码都改成包含有A、C、M这三个字母的大写字母字符串,
现在她需要检查之前的她拥有的密码中少了哪个字母(顺序无关,至多只会缺少一个字母,别问为什么问就是百万伏特!)。
如果三个字母出现过则输出-1

输入描述:

第一行为一个整数T(1≤T≤100)
第二至T+1行,每一行为一个字符串s(1≤∣s∣≤200)。
(|s|代表字符串 s 的长度)。

输出描述:

输出 T 行,每行为一个字母,如果不存在缺少字母输出-1。
示例1
输入
复制
1
SAFFDSAGFHGFDHREQITUODGJFDGMNQTFDOIUQJHDLSAJFIOQWUIJFDSDJH
输出
复制
C

题目大意:

给出一串字符串,问少了A C M种的哪一个字母(最多少一个),如果3个字母都在则输出-1.

解题思路:

用标记数组统计一下,遍历字符串,用字母做下标,如果这个字母出现过了则数组内的值一定不为0,AC代码:

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 150;
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int a[N];
		memset(a,0,sizeof a);
		string str;
		cin>>str;
		for(int i=0;i<str.length();i++)
		  a[str[i]]++;//遍历字符串统计一下
		if(!a['A'])
		  cout<<"A"<<endl;
		else if(!a['C'])
		  cout<<"C"<<endl;
		else if(!a['M'])
		  cout<<"M"<<endl;
		else
		  cout<<"-1"<<endl;
	}
	//system("pause");
	return 0;
}
posted @ 2020-06-21 10:02  Hayasaka  阅读(61)  评论(0编辑  收藏  举报