2014年去哪儿网校园招聘笔试题

2023-05-16

已知字母序列【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;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2014年去哪儿网校园招聘笔试题 的相关文章

随机推荐