PTA | 程序设计类实验辅助教学平台 (pintia.cn)
思想
就是对两个字符串进行比较,但是要加一些限制条件。
分析:坏掉的键保存在字符串bad中,应该输入的文字保存在should中,遍历整个应该输入的字符串,因为坏键以大写给出,所以如果在bad里面找到了should[i]的大写,表示这个字符对应的键坏了,则跳过这个字符不输出,continue跳过~
注意:如果大写键坏了,小写字母也不能输出,可以想象一下键盘上的键如果坏了,是什么都输出不了的。
注意:因为读入时,数据里面是可能存在 空格的1,我们要把空格也读入,那就不能用cin了,要用getline()
如果用cin就会输出一个.
如果是getline就会正常输出:
如果should[i]是大写并且在bad中找到了'+',表示上档键坏了,大写无法输出,所以这个字符也不能输出,continue跳过~如果都没跳过,则要输出should[i]~
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
string bad,should;
getline(cin,bad);
getline(cin,should);
for(int i=0;i<should.size();i++)
{
//如果在bad里找到了大写的should[i],说明这个键坏了,不能输出
if(bad.find(toupper(should[i]))!=string::npos) continue;
//如果在bad里找到了大写的should[i],并且bad里找到了+号 ,那就是上档键坏了,大写不能输出
if(isupper(should[i])&&bad.find('+')!=string::npos)continue;
cout<<should[i];
}
return 0;
}