2

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

我还应该指出,在我的课程中,我们还没有接触到更高层次的编程概念,比如时间复杂度或算法开发。我这么说是因为我觉得我真正要问的概念有名字,我只是还没有听说过。

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

将第一个N字符 whereN = length of the misspelled word - 1与字典单词进行比较(它们将从系统文件中读取到动态分配的数组中)

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

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

感觉笨拙和尴尬,但这是我们教科书建议的处理方式。我已经阅读了关于遍历树和计算各种有趣的东西以提高效率和准确性的 wiki 文章,但此时它们已经超出了我的想象。感谢您提供任何帮助,并感谢您花时间阅读本文。

4

1 回答 1

3

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

你读到的所有花哨的算法都有以下一个或两个目标:

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

但这仅在您认真关注性能时才重要。编写自己的代码来执行此操作没有任何问题。它可能不是很好,但你会学到很多,而不是跳入并实现一个你还不理解的算法。

于 2012-06-17T07:45:59.353 回答