题目描述
对于一个字符串,将其后缀子串进行排序,例如grain其子串有:grain、rain、ain、in、n,然后对各子串按字典顺序排序,即:ain,grain,in,n,rain
输入描述
多组数据输入,每个案例为一行字符串。
输出描述:
将子串排序输出
示例
输入
grain
输出
ain
grain
in
n
rain
思路
-
输入一个字符串,利用substr方法提取它的所有子串,并存放在字符串数组中。
-
对字符串数组进行sort排序,按从小到大的顺序排序,最后输出即可。
具体实现
#include<bits/stdc++.h>
using namespace std;
bool cmp(string a, string b){
return a<b;
}
int main(){
string s,a[100];
int i;
while(cin>>s){
int ls = s.size();
int t=ls;
for(i=0; i<ls; i++){//获取子串 ,并存入a数组中
if(ls!=0){
a[i]=s.substr(i,t); //提取子串,从索引i开始,提取连续t个字符
//cout<<a[i]<<endl;
t--;
}else
break;
}
sort(a,a+ls,cmp); //排序
for(int i=0; i<ls; i++)
cout<<a[i]<<endl;
}
return 0;
}
小结
-
substr(i,n):提取字符串,从下标i开始,连续提取n个字符。
-
sort排序真香。