思路一:
将能够输出的在数组中都设为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;
}