我想要獲取字符串的所有子序列。例如: -查找大字符串的子序列
firstString = "ABCD"
O/P應該是;
'ABCD', 'BCD', 'ACD', 'ABD', 'ABC', 'CD', 'BD', 'BC', 'AD', 'AC', 'AB', 'D', 'C', 'B', 'A'
對於我使用下面的代碼部分: -
#!usr/bin/python
from __future__ import print_function
from operator import itemgetter
from subprocess import call
import math
import itertools
import operator
call(["date"])
firstArray = []
firstString = "ABCD"
firstList = list(firstString)
for L in range(0, len(firstList)+1):
for subset in itertools.combinations(firstList, L):
firstArray.append(''.join(subset))
firstArray.reverse()
print (firstArray)
call(["date"])
但這種代碼是不可擴展的。
如果我提供: -
firstString = "ABCDABCDABCDABCDABCDABCDABCD"
程序需要近6分鐘的時間內完成。
----------------捕獲,同時運行該腳本--------------------
python sample-0012.py
Wed Feb 8 21:30:30 PST 2017
Wed Feb 8 21:30:30 PST 2017
有人可以幫忙嗎?
我認爲你必須現實。該字符串的長度爲28個字符,它提供了一個長度爲268435456的powerset(如果不包含空集,那麼可以少一個)。它永遠不會在眨眼之間發生。調用反向無疑無助,因爲它排除了使用懶惰的迭代器。也許如果你真的想要最低優先,也許你可以使用'組合(data,len(firstList) - r)'來首先檢索更大的組合。 –