我的答案
#include<iostream>
#include <string>
using namespace std;
int main() {
//先用数组去存储输入的A和B,然后遍历数组A,B,相同的字母去除,不同的字母留下,最后输出
string A, B;
getline(cin, A);
getline(cin, B);
string::iterator it; //指向string类的迭代器。你可以理解为指针
for (unsigned int i=0;i<B.length();i++)
{
for (it = A.begin(); it != A.end(); it++)
{
if (*it == B[i])
{
A.erase(it); //删除it处的一个字符
}
}
}
for (unsigned int i=0;i<A.length();i++)
{
cout << A[i];
}
return 0;
}
结果报错如下:( 有大佬给看看是咋回事不?)
网上正确答案【亲测可行】
思路:
输入为包含空格的字符串,所以用getline读入。
每个字符串都是由可见的ASCII码和空白字符组成,所以只需要将B中出现的所有字符的ASCII值标记,输出时跳过即可。
可使用一个256的数组记录标记。
#include <iostream>
#include <string>
using namespace std;
int book[256];
int main() {
string s, a;
getline(cin, s);
getline(cin, a);
for(int i = 0; i < a.length(); i++) {
book[a[i]] = 1;
}
for(int i = 0; i < s.length(); i++) {
if(book[s[i]] == 1) {
continue;
}
cout << s[i];
}
return 0;
}