题目描述
给定n个字符串,请对n个字符串按照字典序排列。
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
(注意:元素可以重复)
输入例子:
9
cap
to
cat
card
two
too
up
boat
boot
输出例子:
boat
boot
cap
card
cat
to
too
two
up
解答:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str;
int n;
vector<string>v;
while(cin>>n)
{
v.clear();
while(n>=1)
{
getline(cin,str);
v.push_back(str);
--n;
}
getline(cin,str);
v.push_back(str);
vector<string>::iterator it1=v.begin();
++it1;
sort(it1,v.end());
vector<string>::iterator it=v.begin();
++it;
for(;it!=v.end();it++)
{
cout<<*it<<endl;
}
}
return 0;
}
解法二:
//当元素加入set中后,已经排好序
#include <iostream>
#include <string>
#include <set>
using namespace std;
int main()
{
string s;
multiset<string> sset;
int n;
cin >> n;
while (n-- && cin >> s)
sset.insert(s);
for (auto &t : sset)
cout << t << endl;
return 0;
}