<九度 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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值