<九度 OJ>题目1099:后缀子串排序

题目描述:

对于一个字符串,将其后缀子串进行排序,例如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


你可能感兴趣的:(数据结构,算法,面试,字符串,九度)