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