当前位置 博文首页 > afeiluo的博客:2014年去哪儿网校园招聘笔试题

    afeiluo的博客:2014年去哪儿网校园招聘笔试题

    作者:[db:作者] 时间:2021-06-10 12:21

    已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {"bed", "dog", "dear", "eye"},按照字母顺序排序并打印。

    本例的输出顺序为:dear, dog, eye, bed。


    
    
    #include <stdio.h>
    #include <stdlib.h>
    
    void swapstr(char **a,char **b){
        if(a!=b){
        char *tmp=*a;
        *a=*b;
        *b=tmp;
        }
    }
    
    int compare(char *a,char *b,char *hashstr){
        int lena=strlen(a);
        int lenb=strlen(b);
        int i=0;int j=0;
       while(i<lena&&j<lenb){
            printf("%d---%d\n",hashstr[*(a+i)],hashstr[*(b+j)]);
        if(hashstr[*(a+i)]<hashstr[*(b+j)]){
            return 1;
        }else if(hashstr[*(a+i)]>hashstr[*(b+j)]){
         return -1;
       }
       i++;j++;
       }
       if((i==lena)&&(j==lenb))
       {
         return 0;
       }
       if(i==lena){
        return -1;
       }
       if(j==lenb){
        return 1;
       }
    }
    int main()
    {
        char seq[]="dgecfboa";
        char hashstr[256];
        int count=0;
        memset(hashstr,0,256);
        int i;
        for(i=0;seq[i]!='\0';i++){
            hashstr[seq[i]]=count++;
        }
        char arrstr[][5]={"bed","dog","dear","eye"};
        int j,k;
        int maxword;
        int retu;
        for(j=0;j<4;j++){
          maxword=j;
          for(k=j+1;k<4;k++){
               retu=compare(arrstr[k],arrstr[maxword],hashstr);
            if(retu>0){
                maxword=k;
            }
           }
            swapstr(&arrstr[j],&arrstr[maxword]);
        }
    
        for(int x=0;x<4;x++){
            printf("%s\n",arrstr[x]);
        }
        return 0;
    }


    下一篇:没有了