3307 单词排序
作者:互联网
3307 单词排序
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字典序输出这些单词,要求重复的单词只输出一次。(区分大小写)
输入
一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔。数据不含除字母、空格外的其他字符。
输出
按字典序输出这些单词,重复的单词只输出一次。
输入样例
She wants to go to Peking University to study Chinese
输出样例
Chinese
Peking
She
University
go
study
to
wants
题目链接:http://class.51nod.com/Challenge/Problem.html#problemId=3307
解题思路
思路1:
1.我们首先要考虑如何分离字符串
2.在输入的时候直接分离单词
3.然后排序并且判断有没有重复的,直接输出
4.PS:不好意思,Dev运行后可能会在循环中跳不出来(没有输出)但是在网站可以AC
思路2:
1.string有一个好处就是字符串可相加
2.遇到空格就直接储存
3.对最后一个字串进行处理
完整代码
思路1:
#include<bits/stdc++.h>
using namespace std;
string A[200];
int main()
{
int n = 0;
while(cin >> A[n++]);
n--;
sort(A,A+n);
cout << A[0] << endl;
for(int i = 1;i < n;i++)
{
if(A[i] != A[i - 1])
cout << A[i] << endl;
}
return 0;
}
思路2:
#include<bits/stdc++.h>
using namespace std;
string s[1000];
int main()
{
string t,m;
getline(cin,t);
int n = 0;
for(int i = 0;i < t.size();i++)
{
if(t[i] != ' ')
m += t[i];//字符串连接
if(t[i] == ' ')
{
s[n++] = m; //即:s[n ] = m;n++;遇到一个空格,意味着有一个字串; s[n++]等于先用s[n]再n++,s[++n]等于先n++;再s[n]
m.clear();
}
}
s[n++] = m;//最后一个不会有空格,所以m里面的单词加不到s里面,所以要特殊处理
sort(s,s + n);
cout << s[0] << endl;
for(int i = 1;i < n;i++)
if(s[i] != s[i - 1])
cout << s[i] << endl;
return 0;
}
标签:输出,string,int,单词,++,3307,排序,空格 来源: https://blog.csdn.net/Lindaian/article/details/113572523