繁体   English   中英

给定字典,查找包含特定字符集和字符串的所有可能单词的最佳方法是什么

[英]Given a dictionary, what's the optimal way to find all possible words that contains a particular set of characters and a string

我在写文字游戏。 我可以访问字典对象来验证单词。 我需要找到所有可能的单词,其中包含一个单词和一组其他字符。 例如:假设单词为“ MEN”,附加字符集为“ WALOHTD”。 我需要一种方法来查找类似...的单词。...1.MEND 2.WOMEN 3.MENTAL 4.等等...基本上,我们正在寻找所有包含“ MEN”和任何特定附加字符的单词。

我当然可以编写代码,将整个字典循环到包含子词的第一个词,然后检查特定字符的存在,但这不是最佳选择。 这需要一秒钟以上的时间。 非常感谢您提供最佳解决方案的帮助。 _rey

问题是常规语言和搜索数据结构的混合。

仅考虑第一个方面,我们倾向于使用正则表达式。 您没有说我们是否可以重复“其他字符”。 如果可以的话,就您的情况而言, [WALOTHD]*MEN[WALOTHD]*很简单,而且很容易适应。

如果我们不能重复,那么我们可以从[WALOTHD]{0,7}MEN[WALOTHD]{0,7} ,过滤掉任何违反规则的内容(“ ALLOTMENT”与该表达式匹配,但是重复L和T )。

或者,我们可以尝试构建一个更复杂的正则表达式,尽管我不确定更好的表达式的收益是否会超过解决它的成本。

从搜索字典的另一面来看, DAWG非常节省空间,并且使查找包含子字符串的匹配项相对有效。 这并不是这个难题的完全匹配,因为我们有很多前缀和后缀的替换需要担心。 如果没有测试,我猜想如果我们不能从“附加”一词中重复,那将是相当不错的,而如果可以的话,那将是可怕的。 但这只是一个猜测。 GADDAG可能值得一看,它比DAWG大,但对于这种搜索而言可能更快(GADDAG用于拼字解决,这与您在此处遇到的问题几乎相同)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM