两个字符串之间的顺序交叉

时间:2016-01-17 05:23:16

标签: python string intersection

我的问题是,如果我们需要找到两个字符串之间的交叉点? 我们怎么能这样做?

例如html"address"应返回"dress"。 我用"dress"来实现我的功能,但是我只能对这些字符进行排序而不是用原始顺序输出它们?那么我应该如何修改我的代码呢?

dict

1 个答案:

答案 0 :(得分:2)

有许多相交的字符串。一种方法是你可以创建一组每个字符串的所有子串然后相交。如果你想要最大的交集,只需从结果集中找到最大值,例如:

def substrings(s):
    for i in range(len(s)):
        for j in range(i, len(s)):
            yield s[i:j+1]

def intersect(s1, s2):
    return set(substrings(s1)) & set(substrings(s2))

然后你可以看到交叉点:

>>> intersect('address', 'dress')
{'re', 'ss', 'ess', 'es', 'ress', 'dress', 'dres', 'd', 'e', 's', 'res', 'r', 'dre', 'dr'}
>>> max(intersect('address', 'dress'), key=len)
'dress'
>>> max(intersect('sprinting', 'integer'), key=len)
'int'
相关问题