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