给定一组包含数字的字符串,如何找到其中的超集。例如,如果出现字符串“139 24”和“139 277 24”,则我想保留“139 277 24”,因为“139 24”可以在其中找到。此外,这些数字可能以任何顺序出现在字符串中。
'24'
'277'
'277 24'
'139 24'
'139 277 24'
'139 277'
'139'
'136 24'
'136 277 24'
'136 277'
'136'
'136 139 24'
'136 139 277 24'
'136 139 277'
'136 139'
'246'
以上数据的结果如下所示。
'136 139 277 24'
'246'
编辑:我正在拆分每个字符串并将单个数字放入集合中,然后通过从整个列表创建的集合进行比较。我可以使用这种方法找到解决方案,但我认为应该有其他更优雅的方法来执行相同的操作。
我尝试了以下代码,并感觉它变得过于复杂。
#First create a set of tuples
allSeqsTuple = set()
for seq in allSeqs: #allSeqs store the sequences described above
x = seq.split()
allSeqsTuple.add(tuple(x))
#For each 'allSeqs', find if all the items in that seq that is in 'allSeqsTuple'.
for line in allSeqs:
x = set(line.split())
result = findContainment(x, allSeqsTuple)
......
......
def findContainment(x, allSeqsTuple):
contained = False
for y in allSeqsTuple:
cntnd = bool(x-set(y))
if (cntnd):
contained = True
continue
else:
break
return contained