gpt4 book ai didi

algorithm - 将字符串映射到唯一的 0..1 浮点值,同时保持顺序

转载 作者:可可西里 更新时间:2023-11-01 11:05:15 26 4
gpt4 key购买 nike

我想使用 Redis 对字符串值进行排序(使用排序集),但我只能为此目的使用 float 。我正在寻找一种算法来将字符串转换为浮点 0..1 值,同时保持顺序。

我的意思是 s1 < s2(按字母顺序)应该意味着 f(s1) < f(s2)。

有这样的算法吗?

P.S. 我将使用这样的算法对用户名进行排序,在大多数情况下,具有匹配分数的玩家会有完全不同的用户名。所以在大多数情况下,这两种方法都应该有效,但仍然存在冲突的空间。另一方面,字符串将被更不正确地排序,如果几乎相同的用户名排序不正确,这是可以接受的。

最佳答案

每个字符都可以映射到它的 ASCII数字。如果将每个字符串转换为其等效的 float ,连接所有 ASCII 数字(最终在它们前面加上零,以便所有字符都映射到三个数字),您将继续排序。 但是如果您的字符串很长,您的 float 将会很大并且您的映射可能不是唯一的(如果多个字符串以相同的字符开头,由于 float 内部的舍入)。

例如:

'hello' -> 104101108108111

如果您知道您的字符串包含哪些字符子集(例如,只有小写字母,或者只有大写字母和数字),您可以创建自己的映射以减少每个字符的数字。

关于algorithm - 将字符串映射到唯一的 0..1 浮点值,同时保持顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15248251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com