Hydra


私信TA

用户名:uq_87402456886

访问量:1343

签 名:

等  级
排  名 17963
经  验 758
参赛次数 0
文章发表 6
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

等差数列(c++)
浏览:570

解题思路:我先用得到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 人评分

  评论区

刚才看了一下别人大佬的解法,发现可以用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;
}
2021-02-23 17:01:49
  • «
  • 1
  • »