输入英文段落,删除其中的重复单词。即每个单词只出现一次


输入英文段落,删除其中的重复单词。即每个单词只出现一次


#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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值