gpt4 book ai didi

java - 将单词映射到单个字符

转载 作者:行者123 更新时间:2023-12-01 14:10:07 25 4
gpt4 key购买 nike

我正在构建一个哈希函数,该函数应将任何字符串(最大长度 100 个字符)映射到单个 [A-Z] 字符(我将其用于分片目的)。

我想到了这个简单的 Java 函数,有没有办法让它更快?

public static final char stringToChar(final String s) {
long counter = 0;
for (char c : s.toCharArray()) {
counter += c;
}
return (char)('A'+(counter%26));
}

最佳答案

均匀分布“碎片”的一个快速技巧是使用哈希函数。

我建议使用默认的 java String.hashCode() 函数

public static char getShardLabel(String string) {
int hash = string.hashCode();
// using Math.flootMod instead of operator % beacause '%' can produce negavive outputs
int hashMod = Math.floorMod(hash, 26);
return (char)('A'+(hashMod));
}

正如指出的那样here这种方法被认为是“足够了”。

根据快速测试,它看起来比您建议的解决方案更快。
在各种长度的 80kk 弦上:

  • getShardLabel 耗时 65 毫秒
  • stringToChar 耗时 571 毫秒

关于java - 将单词映射到单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63278669/

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