题目描述
给定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
解题思路
为了让输入的这些字符串按照字典序进行排序,应选用STL中的multiset来存储输入字符串。由于string类中重载了<,所以multiset中的元素将按照<所定义的次序(即字典序)进行排序。需要注意的是,由于输入字符串有可能会重复,所以要使用multiset而不是set。
代码
#include <iostream>
#include <string>
#include <set>
using namespace std;
int main()
{
multiset<string> strSet; //用multiset来存储输入的字符串,则结果是按照字典序排列的,并且元素可以重复
int num = 0;
string str;
cin >> num;
for (int i = 0; i < num; ++i)
{
cin >> str;
strSet.insert(str);
}
for (const string &s : strSet)
{
cout << s << endl;
}
return 0;
}