因此,源数据是一个排序的字典单词列表,以及一个随机未排序的字符串列表。
任务是使用随机字符串从列表中提取仅来自字典列表中两个单词组合的字符串。
字典列表:
ace
dice
nice
task
test
try
随机列表:
test123task
testtask
bbtesttask
bbtest1task
nicetry
nicetesttry
nice1task
1nicetry
结果:
testtask
nicetry
您是否遇到过执行此操作且可以处理大型列表的脚本?我不太确定我能够自己编程。我正在考虑一种处理列表一次的算法,并提取以关键字开头的单词列表。它应该为第一个字符串结束的字母添加某种索引号。
然后,再次处理列表,从索引+ 1开始直到结束。
欢迎任何有关现成解决方案的指示或从哪里开始。我对PHP和MySQL的经验有限。
答案 0 :(得分:1)
这是一个开始:
从随机列表中取一个词:
test123task
在词典列表中搜索(使用二进制搜索)t
。如果单词以t
开头,则搜索te
,如果找到,则搜索tes
等,找不到test1
,因此您留在test
字典中的实际单词并搜索单词1
,没有任何内容从1
开始,所以回溯。但tes
,te
和t
不是单词。 test123task
不正确。
另一个例子:
testtask
搜索t
,te
,tes
,test
,testt
。在test
回溯。 test
是一个正确的词,从这里继续。搜索t
,ta
,tas
,task
。 task
是一个正确的词。回归成功。
您输入的数据不是很有趣,因为在某些情况下您可能需要停留在较短的单词上。我们在字典中添加tes
。并测试这个词:
`testask`
搜索t
,te
,tes
,test
,testa
。在test
回溯。 test
是一个正确的词,从这里继续。搜索a
,as
。在a
回溯。 a
不是一个正确的词。回溯到tes
。 tes
是一个正确的词,从这里继续。搜索t
,ta
,tas
,task
。 task
在字典中,返回成功。
从这三个例子中,你应该能够编写使用回溯的递归算法来测试所有可能性。