我有两个包含一和零的字符串。我想确定在同一位置有多少个字符不同。例如:
“ 0000111000000000000000000000000000000000000000000000000000000000000000000000”和“ 0000000000000010000110000111100000000000000000000000000000000000000000”
其结果是:10
这些字符串的长度总是64。
我可以使用循环遍历字符串并计算差值的循环来实现。但我想用reg exp或其他工具来做。速度对我很重要。因为我有很多数据要比较。
将字符串转换为bit(64),使用bitwise XOR,将结果转换为text并计算1字符数:
select length(replace(
( '0000111000000000000000000000000000000000000000000000000000000000'::bit(64)
# '0000000000000010000110000111100000000000000000000000000000000000'::bit(64))::text,
'0', ''))
length
--------
10
(1 row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |