截至目前,我决定使用字典并遍历整个内容。每次我看到一个换行符,我都会创建一个包含从该换行符到下一个换行符的字符串,然后我执行 string.find() 以查看该英文单词是否在其中。这需要很长时间,每个单词大约需要 1/2-1/4 秒来验证。
它运行良好,但我需要每秒检查数千个单词。我可以运行多个窗口,这不会影响速度(多线程),但它仍然只能每秒检查 10 个。 (我需要几千)
我目前正在编写代码来预编译一个包含英语中每个单词的大型数组,这应该会加快很多速度,但仍然没有达到我想要的速度。 必须有更好的方法来做到这一点。
我正在检查的字符串将如下所示:
"hithisisastringthatmustbechecked"
但其中大部分包含完全垃圾,只是随机字母。
我无法检查不可能的字母组合,因为该字符串会因为“thatmust”之间的“tm”而被丢弃。
最佳答案
您可以使用 Knuth–Morris–Pratt (KMP) algorithm 来加快搜索速度.
遍历每个字典单词,然后build a search table for it .你只需要做一次。现在您搜索单个单词的速度会更快,因为“错误的开始”将被消除。
关于c++ - 检查字符串是否包含英文句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18023005/