#include <iostream>
using namespace std;
#include <string>
int main()
{
string a, b;
getline(cin,a);
getline(cin,b);
int la = a.length(), lb = b.length();
for (int i = 0; i < la; i++)
{
for (int m = 0; m < lb&&i<la; m++) {
if (a[i] == b[m]) {
i++;
m = -1;
continue;
}
}
//if(i!=la)
cout << a[i];
}
system("pause");
}
这个有点慢,复杂度O(n²),其实没有必要将每一个a中的字符与b中的字符一个一个比较。可以把b中的字符转化为数组中的一个具体的值。
对于a的循环,碰到具体的值就跳过。输出。可以断定这是最简单的,因为你起码要把a,b中的每个元素看一遍吧。
#include <iostream>
using namespace std;
#include <string>
int main()
{
string a, b;
char book[256];
getline(cin,a);
getline(cin,b);
int la = a.length(), lb = b.length();
for (int i = 0; i < lb; i++)book[b[i]] = 1;
for (int i = 0; i < la; i++)
{
if (book[a[i]] == 1)continue;
cout << a[i];
}
system("pause");
}
O(n)