输入英文段落,删除其中的重复单词。即每个单词只出现一次
#include<iostream>
#include<string>
using namespace std;
#define MAX 1001
int main()
{
//char *p[MAX];
string str[MAX];
string result[MAX];
int i=0;
int num=0; //总单词个数
int n=0; //用来记录不重复的单词个数
int p[MAX];
while(cin>>str[i])
{
// p[i]=&str[i][0]; //第i个指针指向第i个单词的首元素
num++;
i++;
}
result[0]=str[0];
n++;
for(i=1;i<num;i++)
{
int flag=0;
for(int j=0;j<n;j++)
{
if(str[i]==result[j])
{
flag=1;
break;
}
}
if(flag==0)
{
result[n]=str[i];
n++;
}
}
for(int j=0;j<n;j++)
{
cout<<result[j]<<endl;
}
return 0;
}
上面是半年前最笨的思路,下面是最新的想法
#include<iostream>
#include<string>
#include<map>
using namespace std;
#define MAX 1001
map<string,int> mat;
map<string,int> flag;
int main()
{
string str[MAX];
string result[MAX];
int i=0;
int num=0; //总单词个数
while(cin>>str[i])
{
// p[i]=&str[i][0]; //第i个指针指向第i个单词的首元素
mat[str[i]] ++;
flag[str[i]] = 0;
num++;
i++;
}
for(i = 0;i < num;i++)
{
if(mat[str[i]]>=1&&flag[str[i]] == 0)
{
cout<<str[i]<<" ";
flag[str[i]] = 1;
}
}
system("pause");
return 0;
}