2019CVTE笔试题 —— 从第一个字符串中删除第二个字符串中没有的元素
样例:
输入:"Welcome CVTE" "KEem"
输出:"emeE"
代码如下:
#include<iostream>
using namespace std;
char *deleteChar(char *str1, char *str2)
{
if (nullptr == str1 || nullptr == str2)
return nullptr; // 判空
const int N = 256;
int timeofChar[N]; // 数组timeofChar用来统计第二个字符串中出现的字符
for (auto &m : timeofChar) // 初始化
m = 0;
for (int i = 0; str2[i] != '\0'; i++)
{
timeofChar[str2[i]]++; // 统计第二个字符串中出现的字符
}
int index = 0;
char *str = new char[]; // 辅助数组用来存放删除后的字符
char *res = str; // 作为返回字符串指针
for (int i = 0; str1[i] != '\0'; i++)
{
if (timeofChar[str1[i]]>0) // 遍历第一个字符串str1,
{ // 保留第二个字符串中出现的字符
str[index++] = str1[i];
}
}
str[index] = '\0'; // str加上结尾符,不然输出会乱码
return res;
}
int main()
{
char *str1 = "Welcome CVTE";
char *str2 = "KEem";
cout << deleteChar(str1, str2) << endl;
return 0;
}