两种代码思路 第二种比较常规 但是思路都是小转大然后判断
1.
#include<bits/stdc++.h>
using namespace std;
int main() {
string s1, s2, ans;
cin >> s1 >> s2;
for (int i = 0; i < s1.length(); i++)
if (s2.find(s1[i]) == string::npos && ans.find(toupper(s1[i])) == string::npos)
/*
toupper() 函数用来将小写字母转换为大写字母。
只有当参数 c 是一个小写字母,并且存在对应的大写字母时,这种转换才会发生。
如果转换成功,那么返回与 c 对应的大写字母;如果转换失败,那么直接返回 c(值未变)。
注意,返回值为 int 类型,你可能需要隐式或者显式地将它转换为 char类型。
string:npos是个特殊值,说明查找没有匹配
*/
ans += toupper(s1[i]);
cout << ans;
return 0;
}
2.
/*
判断哪个键坏着,需要注意的是最后输出大写字母,我们可以把大小写字母平等看待
(把所有的小写转大些)
a-z:97-122
A-Z:65-90
0-9:48-57
*/
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s,s1,s2;
int a[150]={0};
cin>>s>>s1;
//小写转大写
for(int i=0;i<s1.length();i++)
{
if(s1[i]>='a'&&s1[i]<='z')
{
s1[i]+='A'-'a';
}
a[s1[i]]=1;//能输出的键赋值为1
}
//遍历原字符串,记得小写转换为大写
for(int i=0;i<s.length();i++)
{
if(s[i]>='a'&&s[i]<='z')
{
s[i]+='A'-'a';
}
if(a[s[i]]!=1)
{
cout<<s[i];
a[s[i]]=1;//输完之后变成1
}
}
}
PAT乙级-旧键盘
最新推荐文章于 2022-10-19 16:27:45 发布