DreamJudge-1294-字尾子串排序

DawnTraveler發表於2024-06-15

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;
}

相關文章