- 题目描述:
-
对于一个字符串,将其后缀子串进行排序,例如grain
其子串有: grain rain ain in n然后对各子串按字典顺序排序,即:
ain,grain,in,n,rain
- 输入:
-
每个案例为一行字符串。
- 输出:
-
将子串排序输出
- 样例输入:
-
grain
- 样例输出:
-
aingraininnrain
Solution1:(qsort)
#include#include #include #include using namespace std; /* sort只能对string排序而不能对字符数组排序 要用qsort */ int cmp(const void *a,const void *b) { //return strcmp((const char *)a,(const char *)b); return strcmp((char *)a ,(char *)b);} int main() { char a[1000][1000]; while(scanf("%s",a[0])!=EOF) { int len = strlen(a[0]); for(int i = 0;i < len-1;i++) { int k = 0; for(int j = i+1;j < len;j++) { a[i+1][k++] = a[0][j]; } a[i+1][k] = '\0'; //必须添加 } qsort(a,len,sizeof(a[0]),cmp); for(int i = 0;i < len;i++) printf("%s\n",a[i]); } }
Solution2:(set)
#include#include #include #include using namespace std;vector v;int main(){ string str; while(cin>>str){ v.clear(); for(int i=0;i