1029旧键盘

思路一:
将能够输出的在数组中都设为1,那么在s[i]中的,又不是1 的就是坏掉的,
在这道题中的收获 :
1.ascii码上界是256
2.a[b] =1;可以在a数组中将下标为98的元素赋值为1;
代码如下:

#include<iostream>
using namespace std;
int main()
{
	string s1, s2;
	//ascii码表上好像最大是256
	int a[256];
	cin >> s1;
	cin >> s2;
	//鄙人认为一开始不能随便转大小写,现在改想法了,反正最后都要输出大写的,可以把s1 s2都转成大写的;
	for (unsigned int i = 0; i < s2.size(); ++i)
	{
		if (s2[i] >= 'a' && s2[i] <= 'z') {
			s2[i] += 'A' - 'a';
		}

		a[s2[i]] = 1;
	}
	for (unsigned int i = 0; i < s1.size(); ++i)
	{

		if (s1[i] >= 'a' && s1[i] <= 'z') {
			s1[i] += 'A' - 'a';
		}

		if (a[s1[i]] != 1)
		{
			cout << s1[i];
			a[s1[i]] = 1;

		}

	}
	return 0;
}

思路二:柳神yyds 学到了两个新的库函数以及返回值的特殊性,有库函数多香香 怎么不用呢
1.find()字符串的寻找函数,若是找不到,返回string::npos,有点神奇
2. toupper()将小写转为大写
3. tolower()将大写转换为小写

#include<iostream>
using namespace std;
int main()
{
	string s,ss,a;
	cin >>s>>ss;


	for (int i = 0; i < s.size(); ++i)
	{
		if (s.find(ss[i]) == string::npos&&a.find(ss[i]) == string::npos)

		{
			a += toupper(s[i]);

		}


	}
	cout << a;
	return 0;
}
上一篇:noip模拟52(联赛后知识待补)


下一篇:物联网安全技术提高区块链应用数据的可信度