擅长:python、mysql、java
<p>您可以为第一个句子的所有子序列创建一个有序的powerset,然后在其他句子中搜索这些字符串中的每一个,删除找不到的子字符串。在</p>
<p>最后,选择具有最多空格的候选子字符串,如果出现平局,则选择最长的子字符串。在</p>
<pre><code>from itertools import combinations
mylist = ['commercial van for movers',
'partial van for movers',
'commercial van for moving' ]
s0 = mylist[0].split()
candidates = [' '.join(s0[slice(*c)]) for c in combinations(list(range(len(s0)+1)), 2)]
for s in mylist:
for i,c in reversed(list(enumerate(candidates.copy()))):
if not c in s:
candidates.pop(i)
max(candidates, key=lambda x: (x.count(' '), len(x)))
# returns:
'van for'
</code></pre>