首页 > 解决方案 > 量化字符串之间字符转置数量的快速方法(python或内部库)

问题描述

考虑我们有两个字符串:

    x1 = "abcdef"
    x2 = "abdcfe"

    x1 == x2 # return False

我的目标是找出这两个具有相同字符的字符串之间有多少转置。在上面的示例中,有 2 个或 4 个,具体取决于您如何查看它(仍然是偶数,因此任何一种方式都有效)。另一种方法是对字符串中的字符进行排序,然后进行比较,如下所示:

    x1s = ''.join(sorted(x1)) # 'abcdef'
    x2s = ''.join(sorted(x2)) # 'abcdef'

    x1s  == x2s # returns True of course

这样,就失去了换位的数量。无法想象普通的 Levenshtein 对此有何帮助,因为使用相同可用字符以外的编辑数量具有相同的权重。例如

    #pip install python-Levenshtein # you'll need this
    from Levenshtein import distance

    distance(x1, x2) # gives 3
    distance(x1s, x2s) # gives 0

有任何想法吗?

标签: pythonstringcharacteredit-distance

解决方案


好的,想出了一个答案,这里是:

    len([i for i, j in zip(x1, x2) if i != j])

这将返回转置计数。


推荐阅读