Python 最短的字符串,通过蛮力包含多个字符串
所以我试图用暴力解决这个问题: 我得到一个随机数的随机字符串,我应该找到最短字符串的长度 包含接收到的所有字符串 例如: 安娜 阿玛 脑 回答:6(最短的字符串是“amanao”) 下面的代码解决了我的问题,但没有我想要的那么快,因为如果我用更多的字符串(或更大的字符串)进行测试,程序将永远结束。 我该如何改进这一点Python 最短的字符串,通过蛮力包含多个字符串,python,itertools,brute-force,Python,Itertools,Brute Force,所以我试图用暴力解决这个问题: 我得到一个随机数的随机字符串,我应该找到最短字符串的长度 包含接收到的所有字符串 例如: 安娜 阿玛 脑 回答:6(最短的字符串是“amanao”) 下面的代码解决了我的问题,但没有我想要的那么快,因为如果我用更多的字符串(或更大的字符串)进行测试,程序将永远结束。 我该如何改进这一点 def parse(arg): strings=set() superS=list() for line in arg:
def parse(arg):
strings=set()
superS=list()
for line in arg:
strings.add(str(line))
superS.append(line)
superS=''.join(superS)
return superS ,strings
def unique_permutations(iterable, r=None):
previous = tuple()
for p in itertools.permutations(sorted(iterable), r):
if p > previous:
previous = p
yield p
def answer(superS,strings):
for i in xrange(1,len(superS)+1):
for elem in unique_permutations(superS, i):
flag = 1
tt=''.join(elem)
for j in strings:
if j not in tt:
flag=0
break
if flag:
return len(tt)
rd=sys.stdin.read().splitlines()
a,b=parse(rd)
print answer(a,b)
这就是“最短公共超弦”问题。这个搜索词应该会引导你进行大量的讨论和示例代码。@jasonharper我尝试过一些搜索,但由于不知道要搜索什么,所以没有成功。非常感谢。这可能是“最短公共超弦”问题的重复。这个搜索词应该会引导你进行大量的讨论和示例代码。@jasonharper我尝试过一些搜索,但由于不知道要搜索什么,所以没有成功。非常感谢。可能重复的