提取字符串的单词列表交集,包含两个单词的组合

时间:2013-11-25 10:54:40

标签: list word intersection

因此,源数据是一个排序的字典单词列表,以及一个随机未排序的字符串列表。

任务是使用随机字符串从列表中提取仅来自字典列表中两个单词组合的字符串。

字典列表:

ace
dice
nice
task
test
try

随机列表:

test123task
testtask
bbtesttask
bbtest1task
nicetry
nicetesttry
nice1task
1nicetry

结果:

testtask
nicetry

您是否遇到过执行此操作且可以处理大型列表的脚本?我不太确定我能够自己编程。我正在考虑一种处理列表一次的算法,并提取以关键字开头的单词列表。它应该为第一个字符串结束的字母添加某种索引号。

然后,再次处理列表,从索引+ 1开始直到结束。

欢迎任何有关现成解决方案的指示或从哪里开始。我对PHP和MySQL的经验有限。

1 个答案:

答案 0 :(得分:1)

这是一个开始:

从随机列表中取一个词:

test123task

在词典列表中搜索(使用二进制搜索)t。如果单词以t开头,则搜索te,如果找到,则搜索tes等,找不到test1,因此您留在test字典中的实际单词并搜索单词1,没有任何内容从1开始,所以回溯。但testet不是单词。 test123task不正确。

另一个例子:

testtask

搜索ttetestesttestt。在test回溯。 test是一个正确的词,从这里继续。搜索ttatastasktask是一个正确的词。回归成功。

您输入的数据不是很有趣,因为在某些情况下您可能需要停留在较短的单词上。我们在字典中添加tes。并测试这个词:

`testask`

搜索ttetestesttesta。在test回溯。 test是一个正确的词,从这里继续。搜索aas。在a回溯。 a不是一个正确的词。回溯到testes是一个正确的词,从这里继续。搜索ttatastasktask在字典中,返回成功。

从这三个例子中,你应该能够编写使用回溯的递归算法来测试所有可能性。