DreamJudge-1294-后缀子串排序

1.题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain

输入输出格式

输入描述:

多组数据输入。
每个案例为一行字符串。

输出描述:

将子串排序输出

输入输出样例

输入样例#:

grain

输出样例#:

ain
grain
in
n
rain

题目来源
上海交通大学机试题

2.题解

2.1 substr截取子串 + sort排序

思路

substr(pos); 从pos位置开始截取到末尾

代码

#include <bits/stdc++.h>

using namespace std;
int main() {
    string input;
    while (getline(cin, input)) {
        vector<string> suffixes;
        int len = input.length();
        
        // 生成所有后缀子串
        for (int i = 0; i < len; ++i) {
            suffixes.push_back(input.substr(i)); // substr(pos); 从pos位置开始截取到末尾 
        }
        
        // 按字典顺序排序
        sort(suffixes.begin(), suffixes.end());
        
        // 输出排序后的后缀子串
        for (const string& suffix : suffixes) {
            cout << suffix << endl;
        }
    }
    return 0;
}

posted @ 2024-06-15 01:50  DawnTraveler  阅读(3)  评论(0编辑  收藏  举报