题目描述
对于一个字符串,将其后缀子串进行排序,例如grain其子串有:grain rain ain in n然后对各子串按字典顺序排序,即: ain,grain,in,n,rain
输入描述:
每个案例为一行字符串。
输出描述:
将子串排序输出
示例1
输入
grain
输出
ain grain in n rain
/*对于一个字符串,将其后缀子串进行排序,
例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,
即: ain,grain,in,n,rain*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct TEMP{
char child[100];
}buff[100];
bool cmp(TEMP a,TEMP b){ //注意参数
int compare=strcmp(a.child,b.child);
if(compare>0) return false;
else return true;
}
int main(){
char buf[100];
int i,j;
while(gets(buf)){
int len=strlen(buf);
for(i=0;i<len;i++){
for(j=i;j<len;j++){
buff[i].child[j-i]=buf[j];
}
}
stable_sort(buff,buff+len,cmp);
for(i=0;i<len;i++){
printf("%s\n",buff[i].child);
}
}
return 0;
}
注:error C2228: ”.child”的左边必须有类/结构/联合,左侧变量是指向类对象的指针,此时不应该用点运算符,而应该用 ->