提问人:Aryan Mane 提问时间:10/21/2023 最后编辑:Ted LyngmoAryan Mane 更新时间:10/21/2023 访问量:42
数组排序问题(某些测试用例失败)
array sorting problem(failing for some testcases)
问:
https://www.hackerrank.com/challenges/sorting-array-of-strings/ 我编写的程序在 3 个测试用例中失败了。 我的代码-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <string.h>
int lexicographic_sort(const char* a, const char* b) {
if (strcmp(a,b)>0)
return 1;
else
return 0;
}
int lexicographic_sort_reverse(const char* a, const char* b) {
if (strcmp(a,b)<0)
return 1;
else
return 0;
}
int sort_by_number_of_distinct_characters(const char* a, const char* b) {
int count1[26]={0},count2[26]={0};
for (int i = 0; i < strlen(a); i++)
{
count1[a[i]-97]++;
}
for (int i = 0; i < strlen(b); i++)
{
count2[b[i]-97]++;
}
int distict1=0,distict2=0;
for (int i = 0; i < 26; i++)
{
if (count1[i]>0)
distict1++;
if (count2[i]>0)
distict2++;
}
if (distict1>distict2)
{
return 1;
}
else if (distict1<distict2)
{
return 0;
}
else
{
return lexicographic_sort(a,b);
}
}
int sort_by_length(const char* a, const char* b) {
if (strlen(a)>strlen(b))
return 1;
else if (strlen(a)<strlen(b))
return 0;
else
return lexicographic_sort(a,b);
}
void string_sort(char** arr,const int len,int (*cmp_func)(const char* a, const char* b)){
char store[2500];
for (int j = 0; j < len - 1; j++)
{
for (int i = 0; i < len - j - 1; i++)
{
if ((*cmp_func)(arr[i],arr[i+1]))
{
strcpy(store,arr[i]);
strcpy(arr[i],arr[i+1]);
strcpy(arr[i+1],store);
}
}
}
}
int main()
{
int n;
scanf("%d", &n);
char** arr;
arr = (char**)malloc(n * sizeof(char*));
for(int i = 0; i < n; i++){
*(arr + i) = malloc(1024 * sizeof(char));
scanf("%s", *(arr + i));
*(arr + i) = realloc(*(arr + i), strlen(*(arr + i)) + 1);
}
string_sort(arr, n, lexicographic_sort);
for(int i = 0; i < n; i++)
printf("%s\n", arr[i]);
printf("\n");
string_sort(arr, n, lexicographic_sort_reverse);
for(int i = 0; i < n; i++)
printf("%s\n", arr[i]);
printf("\n");
string_sort(arr, n, sort_by_length);
for(int i = 0; i < n; i++)
printf("%s\n", arr[i]);
printf("\n");
string_sort(arr, n, sort_by_number_of_distinct_characters);
for(int i = 0; i < n; i++)
printf("%s\n", arr[i]);
printf("\n");
}
其中一个失败的测试用例是
24
kkhcvkjrjcbyqixf
rbbxaogunbzkusueaycmhvvlwwdg
jdnmekotqiiuhuocqveozqyuol
mpbhaeumlebgxlotvkjxaedqfvqblcuxrxfrbbfmi
sfuiarujowqtnvodxaftz
qerrixgqfax
jxsdgicwbpssursc
rccyuvgtbyycvcnuuscfuziltagms
ymmamgvuzzsabpeqjailfdm
ohqwtlitxvtjdrddqxftmjjxlrkrwzhngxlci
xhprssixxauetipchbv
usrbhzasdlmbsduly
kvefczprbxuyposirzjuupfiszmmmkqxhwe
vtdyqzwhorrhsdbmsivmkjywvqveozqjvtjlshviyosr
tflecxolxmgnil
jdmewxsqfnbfdtwxoeisgiiufv
vdnyoqntoklhraixfdvcrzlkgvsacncxs
yhkncbxnkppsmuvjxmjkyrhrtjgvjbphkcumdtbpiqh
meglsrvrickbosyxvqefsar
tumemvczbk
tbimlmwoarnzmffuzfnybikhuhlviwidzsqngobjfqiuv
outduwlefinrdvpnbofrdmffvnvfjtt
ppckloqt
ekbbzrcpyvtmbajqxpzsiyixculqmgosqsurl
其预期输出为-
ekbbzrcpyvtmbajqxpzsiyixculqmgosqsurl
jdmewxsqfnbfdtwxoeisgiiufv
jdnmekotqiiuhuocqveozqyuol
jxsdgicwbpssursc
kkhcvkjrjcbyqixf
kvefczprbxuyposirzjuupfiszmmmkqxhwe
meglsrvrickbosyxvqefsar
mpbhaeumlebgxlotvkjxaedqfvqblcuxrxfrbbfmi
ohqwtlitxvtjdrddqxftmjjxlrkrwzhngxlci
outduwlefinrdvpnbofrdmffvnvfjtt
ppckloqt
qerrixgqfax
rbbxaogunbzkusueaycmhvvlwwdg
rccyuvgtbyycvcnuuscfuziltagms
sfuiarujowqtnvodxaftz
tbimlmwoarnzmffuzfnybikhuhlviwidzsqngobjfqiuv
tflecxolxmgnil
tumemvczbk
usrbhzasdlmbsduly
vdnyoqntoklhraixfdvcrzlkgvsacncxs
vtdyqzwhorrhsdbmsivmkjywvqveozqjvtjlshviyosr
xhprssixxauetipchbv
yhkncbxnkppsmuvjxmjkyrhrtjgvjbphkcumdtbpiqh
ymmamgvuzzsabpeqjailfdm
ymmamgvuzzsabpeqjailfdm
yhkncbxnkppsmuvjxmjkyrhrtjgvjbphkcumdtbpiqh
xhprssixxauetipchbv
vtdyqzwhorrhsdbmsivmkjywvqveozqjvtjlshviyosr
vdnyoqntoklhraixfdvcrzlkgvsacncxs
usrbhzasdlmbsduly
tumemvczbk
tflecxolxmgnil
tbimlmwoarnzmffuzfnybikhuhlviwidzsqngobjfqiuv
sfuiarujowqtnvodxaftz
rccyuvgtbyycvcnuuscfuziltagms
rbbxaogunbzkusueaycmhvvlwwdg
qerrixgqfax
ppckloqt
outduwlefinrdvpnbofrdmffvnvfjtt
ohqwtlitxvtjdrddqxftmjjxlrkrwzhngxlci
mpbhaeumlebgxlotvkjxaedqfvqblcuxrxfrbbfmi
meglsrvrickbosyxvqefsar
kvefczprbxuyposirzjuupfiszmmmkqxhwe
kkhcvkjrjcbyqixf
jxsdgicwbpssursc
jdnmekotqiiuhuocqveozqyuol
jdmewxsqfnbfdtwxoeisgiiufv
ekbbzrcpyvtmbajqxpzsiyixculqmgosqsurl
ppckloqt
tumemvczbk
qerrixgqfax
tflecxolxmgnil
jxsdgicwbpssursc
kkhcvkjrjcbyqixf
usrbhzasdlmbsduly
xhprssixxauetipchbv
sfuiarujowqtnvodxaftz
meglsrvrickbosyxvqefsar
ymmamgvuzzsabpeqjailfdm
jdmewxsqfnbfdtwxoeisgiiufv
jdnmekotqiiuhuocqveozqyuol
rbbxaogunbzkusueaycmhvvlwwdg
rccyuvgtbyycvcnuuscfuziltagms
outduwlefinrdvpnbofrdmffvnvfjtt
vdnyoqntoklhraixfdvcrzlkgvsacncxs
kvefczprbxuyposirzjuupfiszmmmkqxhwe
ekbbzrcpyvtmbajqxpzsiyixculqmgosqsurl
ohqwtlitxvtjdrddqxftmjjxlrkrwzhngxlci
mpbhaeumlebgxlotvkjxaedqfvqblcuxrxfrbbfmi
yhkncbxnkppsmuvjxmjkyrhrtjgvjbphkcumdtbpiqh
vtdyqzwhorrhsdbmsivmkjywvqveozqjvtjlshviyosr
tbimlmwoarnzmffuzfnybikhuhlviwidzsqngobjfqiuv
ppckloqt
qerrixgqfax
tumemvczbk
tflecxolxmgnil
usrbhzasdlmbsduly
jxsdgicwbpssursc
kkhcvkjrjcbyqixf
xhprssixxauetipchbv
outduwlefinrdvpnbofrdmffvnvfjtt
rccyuvgtbyycvcnuuscfuziltagms
sfuiarujowqtnvodxaftz
jdmewxsqfnbfdtwxoeisgiiufv
jdnmekotqiiuhuocqveozqyuol
meglsrvrickbosyxvqefsar
ymmamgvuzzsabpeqjailfdm
vtdyqzwhorrhsdbmsivmkjywvqveozqjvtjlshviyosr
ohqwtlitxvtjdrddqxftmjjxlrkrwzhngxlci
vdnyoqntoklhraixfdvcrzlkgvsacncxs
yhkncbxnkppsmuvjxmjkyrhrtjgvjbphkcumdtbpiqh
kvefczprbxuyposirzjuupfiszmmmkqxhwe
rbbxaogunbzkusueaycmhvvlwwdg
ekbbzrcpyvtmbajqxpzsiyixculqmgosqsurl
mpbhaeumlebgxlotvkjxaedqfvqblcuxrxfrbbfmi
tbimlmwoarnzmffuzfnybikhuhlviwidzsqngobjfqiuv
答: 暂无答案
评论
strcpy()
return strcmp(a, b);
return lexicographic_sort(b, a);
97
'a'