找出两个长度不等的字符串之间的差异

Finding the difference between two strings of unequal length

给定两个字符串

s1 = 'abcdef'
s2 = 'bbcdefg'

目标是找到 s1 和 s2 之间的汉明距离,不仅计算不同字符的差异,还计算要添加到最终计数中的任何其他字符。在 s2 中,第一个字符是 'b',而不是像 s1 中那样的 'a',因此计数会加一。然而,s2 也有 'g' 而 s1 没有,使 s1 的长度增加一个字符,导致它们的汉明距离计数等于 2.

理想情况下,代码应为一行。

我目前拥有的是:

def hamming_distance(s1, s2):
    return sum(c1 != c2 for c1, c2 in zip(s1, s2))

hamming_distance('abcdef', 'bbcdefg')

1

我正在使用 python 版本 3.8.5

您可以尝试 itertools.zip_longest 避免 zip() 在最短的字符串上停止。

from itertools import zip_longest

def hamming_distance(s1, s2):
    return sum(c1 != c2 for c1, c2 in zip_longest(s1, s2))

hamming_distance('abcdef', 'bbcdefg')  # 2
hamming_distance('book', 'tooth')      # 3