解题思路:我先用得到getline保存字符串,然后分割字符串保留单词到一个字符串数组,同时记录单词个数,接下来去一个单词一个单词对比,如果相同,单词数目减一

注意事项:分割字符串的时候注意长度

参考代码:

#include<iostream>
#include<string>
#include <algorithm>
using namespace std;

string data[100];//单词保存到data里面 
bool vis[100];
int main()
{
	string s;
	getline(cin,s);
	int ls = s.length(),i = 0,pos = 0,j = 0;
	int sum = 0;
	//分割单词统计个数(其实多少个空格就行了) 
	for(i = 0;i<ls;i++)
	{
		if(s[i] == ' ')
		{
			string s2 = s.substr(pos,i-pos);
			pos = i+1;
			data[j++] = s2;
			sum++;
//			cout<<s2<<endl;
		}
		if(i == ls-1)
		{
			string s2 = s.substr(pos,i-pos+1);
			sum++;
			data[j++] = s2;
//			cout<<s.substr(pos,i-pos+1);	
		} 
	}
	int num = sum;
	for(i = 0;i<sum;i++)
	{
		for(j = i+1;j<sum;j++)
		{
			//如果单词比较过了,下次就不用再比了 
			if(vis[j] == 0)
			{
				if(data[i] == data[j])
				{
					vis[j] = 1;
					num--;
				}				
			}
		}
	}
	cout<<num<<endl;
	
	//cout<<s<<endl;
	return 0;
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

Hydra 4年前 回复TA
刚才看了一下别人大佬的解法,发现可以用STL里的set集合直接去统计,太强了
#include<iostream>
#include<set>
using namespace std;
int main(){
      set<string> s;
      string s1;
       while (cin >> s1)s.insert(s1);
       cout << s.size();
       return 0;
}