【发布时间】:2021-03-17 15:43:32
【问题描述】:
我有一个 target_word,比如 'aaaaaaa',还有一个单词列表 ['aa', 'aaa']。问题是发现是否可以使用多个单词或单词列表中的至少一个单词的串联来形成给定的单词。 (列表中的每个单词都可以无限次使用)。
约束:
length of the list of words<=10^3
在上面的例子中:
aaaaaaa = aa + aa + aaa
我的方法是贪婪地检查给定单词列表中最长的单词是否存在。但我怀疑这可能不是一个好方法。
我按照单词长度递减的顺序对列表进行排序。 list=['aaa', 'aa'] 然后迭代检查给定目标词中是否存在该词。
target_word= target_word.replace("aaa", "")
并以类似的方式继续。 提前致谢
【问题讨论】:
-
也许可以告诉你的方法并要求改进
my approach is to go greedy没有提出任何具体建议。 -
@YashvanderBamel 我添加了,请查看
-
您的方法将给出错误的结果,即我们是否可以从单词 'bb' 和 'aaa' 中产生 'baaab'。相反,您能否生成一个缓慢但保证正确的递归算法?然后想办法不重做同样的逻辑,让它变快?
-
@btilly我已经想到了递归,但这会给出 2^1000 的复杂度,这是不切实际的。
-
你考虑过使用数据结构Trie吗?
标签: python string algorithm data-structures