我几乎已经完成了这个问题的代码,我将说明如下:
鉴于:
长度为“n”的数组(例如 n = 10000)声明如下,
char **records = malloc(10000*sizeof(*records));
每个 record[i] 都是一个 char 指针,指向一个非空字符串。
records[i] = malloc(11);
字符串是固定长度的(10 个字符 + '\0')。
要求:
返回上述数组中出现频率最高的字符串。
但是现在,我有兴趣获得一种比我目前拥有的原始算法稍微不那么残酷的算法,即在两个 for 循环中筛选整个数组:(,将两个循环遇到的字符串存储在一个类似的临时数组中大小('n' - 如果都是唯一字符串)用于与下一个字符串进行比较。内部循环从'外部循环位置 + 1 '迭代到' n '。同时,我有一个类似的整数数组size - 'n', 用于计算重复出现次数,每个第 i个元素对应于比较数组中的第 i个(唯一)字符串。然后找到最大的整数并使用它在比较数组中的索引返回最常出现的字符串.
我希望我足够清楚。我自己对算法感到很羞耻,但必须这样做。我相信在 C 中有更聪明的方法可以做到这一点。
有一个伟大的星期天,
干杯!