宁波工程学院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;
}