C - 返回字符指针数组中重复次数最多/出现次数最多的字符串

标签 c string similarity

我几乎已经完成了这个问题的代码,我将声明如下:

给定:

长度为“n”的数组(假设 n = 10000)声明如下,

     char **records = malloc(10000*sizeof(*records));

每条record[i]都是一个char指针,指向一个非空字符串。

     records[i] = malloc(11);

字符串是固定长度的(10 个字符 + '\0')。

要求:

返回上述数组中出现频率最高的字符串。

但是现在,我有兴趣获得一种比我目前拥有的原始算法稍微不那么残酷的算法,即在两个 for 循环中筛选整个数组:(,将两个循环遇到的字符串存储在一个临时的用于与下一个字符串进行比较的相似大小的数组('n' - 如果所有字符串都是唯一的字符串)。内循环从'外循环位置 + 1' 迭代到'n'。同时,我有一个整数数组,大小相似 - 'n',用于计算重复出现次数,每个第 i 元素对应于第 i th 比较数组中的(唯一)字符串。然后找到最大的整数并使用它在比较数组中的索引返回最常出现的字符串。

希望我说得够清楚了。我自己对算法感到很惭愧,但必须这样做。我相信在 C 中有更聪明的方法来做到这一点。

祝你有个愉快的星期天,

干杯!

最佳答案

如果不擅长好的算法(谷歌、维基百科和 Stackoverflow 对我来说已经足够好了),我想到的一个解决方案是对数组进行排序,然后使用一个循环遍历条目。只要当前字符串与前一个字符串相同,就增加该字符串的计数器。完成后,您将获得一个字符串及其出现的“列表”,然后可以根据需要对其进行排序。

关于C - 返回字符指针数组中重复次数最多/出现次数最多的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14179966/

相关文章:

c - 如何在c中反转char数组?

string - 这已经是一个字符串相似度算法了吗?

c# - 比较阵列之间的距离?

lucene - 查找两个文档之间的相似性 Lucene

c - 同名的两个静态变量(两个不同的文件)和外部其中一个在任何其他文件中

Upskirt 的 Python 扩展 : garbage at end of string

c - 从套接字读取时读取返回 1,即使它读取更多

.net - 对空字符串和 DBNull 感到困惑

python - 如何将一个字符串与一组其他字符串进行比较

循环遍历带有全局计数器的 C 数组