原题链接:蓝桥杯算法提高VIP-不同单词个数统计
解题思路:我先用得到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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
刚才看了一下别人大佬的解法,发现可以用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; }