C 拼写检查、字符串概念、算法

标签 c performance algorithm spell-checking

这是我关于堆栈溢出的第一个问题。一些快速的背景知识,这不是一个学校项目,只是为了娱乐、练习和学习。我正在尝试用 C 语言制作一个拼写检查器。我遇到的问题是想出可能的单词来替换拼写错误的单词。

我还应该指出,在我的类(class)中,我们还没有学到更高级别的编程概念,例如时间复杂度或算法开发。我这么说是因为我有一种感觉,我真正想问的概念有一些名称,只是我还没有听说过。

在其他类似的帖子中,大多数人建议使用编辑距离或遍历帕特里夏树;仅比较子字符串会有问题吗?我想出的(非常低效的)算法是:

将前 N 个字符(其中 N = 拼写错误单词的长度 - 1)与字典单词进行比较(它们将从系统文件读取到动态分配的文件中)数组)

如果拼写错误的单词中的 N 个字符与字典中的单词匹配,则将其添加到建议列表中;如果没有找到更多匹配项,则减少 N

继续,直到找到 10 条建议或N = 0

这感觉笨拙和尴尬,但这就是我们的教科书建议的解决方法。我读过关于遍历树木和计算各种有趣的事情以提高效率和准确性的维基文章,但目前它们超出了我的理解范围。感谢您的帮助,并感谢您花时间阅读本文。

最佳答案

现代计算机速度很快,非常快。对于您来说,使用您描述的算法进行编码是值得的,并看看它在您的机器上与您的字典的工作效果如何。如果效果可以接受,那就太好了!否则,您可以尝试通过选择更好的算法来优化它。

您读到的所有奇特算法都有以下一个或两个目标:

  • 加快拼写检查速度
  • 提供更好的纠正建议

但只有当您非常关心性能时,这一点才重要。编写自己的代码来执行此操作没有任何问题。它可能不是很好,但您会学到比跳入并实现您尚不理解的算法更多的东西。

关于C 拼写检查、字符串概念、算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11069719/

相关文章:

在 C 中创建文件

performance - Rust - 为什么我的程序执行速度非常慢 - 比使用 Node 用 Ja​​vaScript 编写的相同程序慢 5 倍以上

c# - 不使用数据集的N层体系结构(数据集听起来对性能不利)

algorithm - 找到在 O(n) 时间 O(1) 空间内不重复的数字

c - 这些功能有什么区别?

c - 提高 C 程序的性能

c++ - 将 OpenMP 与 clang 一起使用

c - 如何将位于结构体中的二维数组中的每个字符保存并加载到文件中? C

python - 开发反向查找字典的有效方法?

algorithm - 用于查找有限集中与另一个点最接近的点的有效算法