字符串排序
HJ14 字符串排序
描述
给定n个字符串,请对n个字符串按照字典序排列
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
示例1
输入:
9
cap
to
cat
card
two
too
up
boat
boot
输出:
boat
boot
cap
card
cat
to
too
two
up
个人答案:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
//定义输入个数
int InputCount;
cin >> InputCount;
//定义输入字符串
string Input;
//定义出书字符串vector
vector<string>Output;
while (InputCount)
{
//如果是第一个 直接pushback
cin >> Input;
if (Output.size() == 0)
{
Output.push_back(Input);
InputCount--;
continue;
}
//获取当前输出的总个数
int CurrentOutputLength = Output.size();
int flag = 0;
//遍历字符串极其字母
for (int j = 0; j < CurrentOutputLength; j++)
{
for (int i = 0; i < Input.length(); i++)
{
//当前的小于目前对比的,在其前边插入
if (Input[i] < Output[j][i])
{
Output.insert(Output.begin() + j, Input);
flag = 1;
break;
}
//如果相等,对比到输入的最后一个仍然相等,直接在其前边插入,若比其大,将进入else
else if (Input[i] == Output[j][i])
{
if (i == Input.length() - 1)
{
Output.insert(Output.begin() + j, Input);
flag = 1;
break;
}
continue;
}
//当前的大于目前对比的,如果比到最后依然最大,在push到最后,否则跟下一个比
else
{
if (j == CurrentOutputLength - 1)
{
Output.push_back(Input);
}
break;
}
}
if (flag == 1)
{
flag = 0;
break;
}
}
//更新输入个数和长度
CurrentOutputLength = Output.size();
InputCount--;
}
//输出
for (int i = 0; i < Output.size(); i++)
{
cout << Output[i] << endl;
}
return 0;
}