例如,输入“ They are students.” 和 “aeiou”, 则删除之后的第一个字符串变为“Thy r stdnts.”
解题思路:对于字符串,由于ASCII码的所有符号为256个(包括了拓展表)那么,我们可以申请一个数组用来代表这256个字符是否存在于第二个字符串中,如果有,则标记为1,如果没有则标记为0.同理,我们通过查询,对应ASCII值号下,数组是否为1,来判定是否删除。
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str1;
string str2;
getline(cin, str1);
getline(cin, str2);
char buf[256] = { 0 };
for (int i = 0; i < str2.size(); i++)
{
buf[str2[i]]++;
}
string ret;
for (int i = 0; i < str1.size(); i++)
{
if (buf[str1[i]] == 0)
ret += str1[i];
}
cout << ret << endl;
system("pause");
return 0;
}
本文介绍了一种从字符串中删除指定字符的有效方法。通过使用一个256大小的数组来标记第二个字符串中的字符,然后遍历第一个字符串,只保留未被标记的字符,从而实现字符串的高效过滤。

被折叠的 条评论
为什么被折叠?



