【十二题解】 | #查找兄弟单词#
查找兄弟单词
http://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
#include<stdio.h> #include<string.h> #include<stdlib.h> int cmp(const void *a,const void *b) {
return strcmp(*(char**)a, *(char**)b);
}
int judeg(inta, intb){
for(int i=0; i<128;i++){
if(a[i] != b[i])return 0;
}
return 1;
}
int brother(chara, charb){
int hash[128]={0};
for(int i=0; a[i]!='\0'; i++)hash[a[i]]++;
int hash2[128]={0};
for(int i=0; b[i]!='\0'; i++)hash2[b[i]]++;
if(strcmp(a, b) != 0 && judeg(hash, hash2)== 1)return 1;
return 0;
}
int main(){
char aa[10]={'d', 'a', 'c', 'b', 'b'};
char bb[10]={'b', 'a', 'c', 'b', 'a'};
int cc = brother(aa, bb);
int number;
while(scanf("%d", &number) != EOF){
char**data=(char**)malloc(sizeof(char*)*number);
for(int i=0; i<number; i++){
data[i]=(char*)malloc(sizeof(char)*10);
for(int j=0; j<10; j++)data[i][j]='\0';
scanf("%s", data[i]);
}
char name[10]={0};
scanf("%s", name);
int hash1[128]={0};
for(int i=0; name[i]!='\0'; i++)hash1[name[i]]++;
int number2;
scanf("%d", &number2);
qsort(data, number, sizeof(data[0]), cmp);
int loc =0;
int all=0;
for(int i=0; i<number; i++){
if(brother(name,data[i])){
all++;
}
if(all==number2){
loc = i;
all++;
}
}
char*aaa=data[162];
int aaaa=brother(name, data[162]);
if(loc==0){
printf("%d", all);
}
else{
printf("%d\n%s", all-1, data[loc]);
}
}
}