给定一组包含数字的字符串,我怎样才能找到那些是超集的字符串。例如,如果出现字符串“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