题目描述
对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain
输入描述:
每个案例为一行字符串。
输出描述:
将子串排序输出
输入
grain
输出
ain
grain
in
n
rain
代码
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
string s;
while(cin>>s){
string a[s.size()];
for(int i=0;i<s.size();i++){
a[i]=s.substr(i,s.size()-i);
}
sort(a,a+s.size());
for(int i=0;i<s.size();i++)cout<<a[i]<<endl;
}
return 0;
}
substr(string, start<,length>):从string的start位置开始提取字符串
length:要提取字符串的长度,若length为以下任意条件之一时,返回start位置到串尾的所有字符:
length不指定
length为空
length为负数
length大于start到串尾的长度Sort函数有三个参数:(第三个参数可不写)
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址)
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
第三个参数可以是自己写的函数
bool compare(int a,int b)
{
return a>b
}
则为降序排列