-
题目描述:
-
对于一个字符串,将其后缀子串进行排序,例如grain
其子串有:
grain
rain
ain
in
n然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain
-
输入:
-
每个案例为一行字符串。
-
输出:
-
将子串排序输出
-
样例输入:
-
grain
-
样例输出:
-
ain grain in n rain
#include "string"
#include <iostream>
using namespace std;
int main()
{
string str;
while (cin>>str)
{
int len = str.size();
int pos = 0;
int *visited=new int[len];
int i = 0;
while (i<len)//共寻找len次最小子串
{
string minsub(1000,'z');//设定近似最大子串(至少你的测试串均小于次字符串)
pos = i;
//寻找最小子串
for (size_t j = 0; j < len; j++)
{
string stepsub(str, j, len - j);
if ( visited[j] != 1 && minsub > stepsub)
{
minsub = stepsub;
pos = j;
}
}
visited[pos] = 1;
cout << minsub << endl;
i++;
}
}
return 0;
}
/**************************************************************
Problem: 1099
User: EbowTang
Language: C++
Result: Accepted
Time:10 ms
Memory:1520 kb
****************************************************************/
注:本博文为EbowTang原创,后续可能继续更新本文。如果转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50517739
原作者博客:http://blog.csdn.net/ebowtang