【发布时间】:2018-06-28 23:05:36
【问题描述】:
我需要在给定 n 个字符的情况下生成所有可能的 Ki 长度单词,例如:
给定
LNDJOBEAWRL
做 承担
我想不出 len 5 这个词,但这就是想法
n = 11
k1 = 2
k2 = 4
k3 = 5
所以基本上所有长度为 2 4 和 5 但没有重复使用字符的单词。最好的方法是什么?
我的字典结构如下所示:
{
3: [{u'eit': u' "eit":0'}],
5: [{u'doosw': u' "woods": 4601, '}, {u'acenr': u' "caner": 0, '}, {u'acens': u' "canes": 0, '}, {u'acden': u' "caned": 0, '}, {u'aceln': u' "canel": 0,'}],
6: [{u'abeill': u' "alible": 0, '}, {u'cdeeit': u' "deciet":0,'}, {u'demoor': u' "mooder": 0, '}],
7: [{u'deiprss': u' "spiders": 0, '}, {u'deiprsy': u' "spidery": 0, '}, {u'cersttu': u' "scutter": 0, '}],
8: [{u'chiiilst': u' "chilitis": 0, '}, {u'agilnrtw': u' "trawling": 0, '}, {u'abdeemns': u' "beadsmen": 0, '}],
9: [{u'abeiilnns': u' "biennials": 0, '}, {u'bclooortu': u' "oblocutor": 0, '}, {u'aabfiinst': u' "fabianist": 0, '}, {u'acdeiituz': u' "diazeutic": 0, '}, {u'aabfiimns': u' "fabianism": 0, '}, {u'ehnoooppt': u' "optophone": 0, '}],
10: [{u'aiilnoprtt': u' "tripolitan": 0, '}, {u'eeilprrsty': u' "sperrylite": 0, '}, {u'gghhiilttt': u' "lighttight": 0, '}, {u'aeegilrruz': u' "regularize": 0, '}, {u'ellnprtuuy': u' "purulently": 0, '}],
11: [{u'cdgilnoostu': u' "outscolding": 0, '}],
12: [{u'ceeeilnostuy': u' "leucosyenite": 0, '}, {u'aacciloprsst': u' "sarcoplastic": 0, '}],
13: [{u'acdeimmoprrsu': u' "cardiospermum": 0, '}, {u'celnnooostuvy': u' "noncovetously": 0, '}],
14: [{u'adeejmnnoprrtu': u' "preadjournment": 0, '}]
}
而我修改后的代码是这样的:
wlen = self.table[pos]
if pos == 0:
# See if the letters remaining in the bag are a valid word
key = ''.join(sorted(bag.elements()))
for d in wlen:
if key in d.keys():
yield solution + [key]
else:
pos -= 1
for dic in wlen:
print(len(dic))
for key in dic.keys():
【问题讨论】:
-
你如何定义一个词是什么?你在用字典吗?还是您只是在寻找字母组合?
-
是的,我有一本包含有效单词的字典。我想在我的字典中查找所有可以用给定字符生成的长度为 2 4 5 的单词
-
所以只需从字典中读取所有单词并保存正确长度的单词,例如在列表或集合中。
-
是的,不重复使用任何字符
-
我认为你需要更清楚地解释你的目标。你的意思是你想找到 3 个单词的集合,每个集合中的第一个单词有 2 个字母,第二个 4 个字母,第三个 5 个字母,每个字母都来自你的基本字符串,例如
LNDJOBEAWRL在这三个词中只使用了一次?
标签: python string algorithm data-structures words