从一个字符串当中找到最大子串(字典序,可以不连续)

来源:互联网 发布:linux修改inittab 编辑:程序博客网 时间:2024/06/05 06:08

说明:字典序最大

比如ca>c  caa>ca cba>c 

#include<stdio.h>#include<string.h>#define MAXSIZE 1000char str[MAXSIZE];char res[MAXSIZE];//从后向前找,后面的总是小于等于前面的才能保证字典序最大//最后一个字符肯定包含在内int main(){    int i;    while(scanf("%s",str)!=0)    {        int len = strlen(str);        int max = 0;        int id = MAXSIZE;        for(i=len-1;i>=0;i--)        {            if(str[i]>=max)            {              res[--id] = str[i];              max = str[i];            }        }        for(i=id;i<MAXSIZE;i++)        {            printf("%c",res[i]);        }        printf("\n");    }}

上面的算法只是需要O(n)的时间复杂度。


0 0
原创粉丝点击