PAT乙级-旧键盘

两种代码思路  第二种比较常规 但是思路都是小转大然后判断
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 
		}
	} 

} 
 
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页