python - 量化字符串之间字符转置数量的快速方法(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
有任何想法吗?
解决方案
好的,想出了一个答案,这里是:
len([i for i, j in zip(x1, x2) if i != j])
这将返回转置计数。
推荐阅读
- java - Rest api 控制器的单元测试
- android - 从 mapbox-sdk 中排除某些组/模块
- wordpress - user_register 钩子不会触发
- css - Webpack 在 HTML 构建中不包含 css
- shell - 命令 sudo:未找到
- javascript - 我无法在 __proto__ 中获取访问属性对象 JavaScript
- swift - 快速比较数组中的索引
- ios - 我们可以从苹果应用商店订购批量优惠券代码吗?
- c# - 当收到更改通知时,如何从订阅 webhook 端点为其他用户向 Microsoft Graph 发出经过身份验证的请求?
- python-2.7 - 如何合并不同形状的图层?