连接时比较字符串

Compare strings when concatenated

我正在比较 2 个输入字符串。这可以简单地使用我写为的单行函数来实现:

from itertools import product

def com_words(str1, str2):
    return sum([i==j for i,j in product(str1.split(), str2.split())])

print(com_words("BOST BREAD", "BOST BROWN BREAD"))

但是,我也想在两个单词连接时进行类似人类的比较。例如,下面的代码导致输出为零,而我希望输出为两个:

print(com_words("BOSTBREAD", " BOST BROWN BREAD"))

除了暴力法,我无法创建实用且快速的算法。请帮忙。

IIUC:

def com_words(str1, str2):
    return sum([word in str1 for word in str2.split()])


print(com_words("BOSTBREAD", " BOST BROWN BREAD"))

这样可以吗?

from itertools import product

def com_words(str1, str2):
    return sum([(i in j) or (j in i) for i,j in product(str1.split(), str2.split())])

print(com_words("BOSTBREAD", "BOST BROWN BREAD"))