求解思路
- ASCII码的范围为0~255,所以用一个大小为256的数组来记录s2中出现过的字符。
- 如果flag[i]=false,说明字符s2[i]在s1中没有出现过,输出即可。
注意
由于输入的字符串s1和s2都有可能包含空格,所以选择用getline(cin, string)
来读取一整行字符,遇到回车结束读入,回车符不包含在该stirng中。
C++源码
#include<iostream>
#include<string>
using namespace std;
int main()
{
bool flag[256];
string s1, s2;
for(int i = 0; i < 256; i++)
{
flag[i] = false;
}
getline(cin, s1);
getline(cin, s2);
for(int i = 0; i < s2.length(); i++)
{
flag[s2[i]] = true;
}
for(int i = 0; i < s1.length(); i++)
{
if(flag[s1[i]] == false)
{
cout<<s1[i];
}
}
cout<<endl;
return 0;
}