首页 > 试题广场 >

后缀子串排序

[编程题]后缀子串排序
  • 热度指数:13895 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
对于一个字符串,将其后缀子串进行排序,例如grain 其子串有: grain rain ain in n 然后对各子串按字典顺序排序,即: ain,grain,in,n,rain

输入描述:
每个案例为一行字符串。


输出描述:
将子串排序输出
示例1

输入

grain

输出

ain
grain
in
n
rain
  • 摘出每一个后缀子串,然后升序排序
#include <stdio.h>                                                                                                                                            
#include <string.h>
#include <stdlib.h>
 
#define maxn 100
 
char str[maxn];
char s[maxn][maxn];
 
int cmp(const void *l, const void *r) 
{
    return strcmp((char*)l, (char*)r);
}
    
int main()
{
    while (fgets(str, maxn, stdin) != NULL)    
    {   
        *(strchr(str, '\n')) = '\0';
        for (size_t i = 0; i < strlen(str); i++)
        {
            strcpy(s[i], str + i); 
        }
        int sum = strlen(str);
        qsort(s[0], sum, sizeof(s[0]), cmp);
        for (size_t i = 0; i < strlen(str); i++)
            printf("%s\n", s[i]);
    }   
    return 0;
}


发表于 2022-03-06 19:33:46 回复(0)

问题信息

难度:
1条回答 12658浏览

热门推荐

通过挑战的用户

查看代码