网上看到这么一个题目:两个字符串,打印第一个字符串,需要删除其中两个字符串的交集字符
想了一下用map应该可以实现:
如下是代码记录:
#include <stdio.h>
#include <string.h>
#include <map>
#include <iostream>
using namespace std;
int main()
{
char* first = "nihaoc++";
char* second = "iamalex";
map<int, char> nointersection;
for(int i = 0; i < strlen(first); i++)
{
nointersection.insert(pair<int, char>(i, first[i]));
}
map<int, char>::iterator it;
for(int i = 0; i < strlen(second); i++)
{
for(it = nointersection.begin(); it != nointersection.end(); it++)
{
if(it->second == second[i])
{
nointersection.erase(it);
}
}
}
int size = nointersection.size();
char finally[size + 1];
memset(finally, 0, size + 1);
int i = 0;
for(it = nointersection.begin(); it != nointersection.end(); it++)
{
finally[i] = it->second;
i++;
}
printf("finally=%s\n", finally);
return 0;
}
运行结果:
finally=nhoc++