【发布时间】:2013-05-25 17:17:26
【问题描述】:
是否有可用的库或代码 sn-p 可以接受两个字符串并返回两个字符串之间的确切或近似中点字符串?
最好使用 Python 编写代码。
背景:
从表面上看,这似乎是一个简单的问题,但我有点挣扎:
- 显然,“A”和“C”之间的中点字符串将是“B”。
- 使用 base64 编码,“A”和“B”之间的中点字符串可能是“Ag”
- 使用 UTF-8 编码,我不确定有效的中点是什么,因为中间字符似乎是控制字符:
U+0088 c2 88 <control>
实际应用:
我问的原因是因为我希望编写 map-reduce 类型的算法来读取我们数据库中的所有条目并处理它们。数据库中的主键是 UTF-8 编码的字符串,字符随机分布。我们使用的数据库是 Cassandra。
希望从数据库中获取最低键和最高键,然后通过找到中点将其分成两个范围,然后通过找到它们的每个中点将这两个范围分成两个较小的部分,直到我有几千个部分,然后我可以异步读取每个部分。
字符串是否为 base-16 编码的示例:(一些中点是近似值):
开始最高和最低键:'000''FFF' / \ / \ '000' '8' '8' 'FFF' / \ / \ / \ / \ 结果:'000' '4' '4' '8' '8' 'B8' 'B8' 'FFF' (经过3级递归)【问题讨论】:
-
这似乎是在 CassandraDB 源代码本身中实现的。见github.com/apache/cassandra/blob/trunk/src/java/org/apache/…
-
这看起来不像您要搜索的内容:stackoverflow.com/a/2510816/624829
标签: python string string-math