Javaの.hashCode()メソッドを使用して、特定の長さの文字列に対して可能な最小/最大ハッシュコードを計算する方法はありますか?特定の長さの文字列の最小/最大hashCode値を見つける
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
...、それは、正または負であってもよいint
を返し:
docsから、使用されるアルゴリズムです。
それはハッシュを計算するために、すべての文字が追加されますので、私は、最小/最大文字値(space
= 32、~
=で構成された同じ長さの文字列に.hashCode()
を実行することにより、最小/最大ハッシュを発見しようとしました126)、私は最小/最大ハッシュの範囲外のs
の値を取得します。
int s = "hello world".hashCode(); // 1794106052
// strings the same len as "s"
int minHash = " ".hashCode(); // 2142006304
int maxHash = "~~~~~~~~~~~".hashCode(); // -2034832962
// hash for s i
Aha!それは多くの意味がある(私はそれが溢れていたと思った、ちょうどどこを把握することができませんでした)あなたは私が6文字で起こる理由を教えてもらえますか? – JeffThompson
最初のnここで、126 * 31 ^(n-1)> Integer.MAX_VALUEは6です。 –
Gotcha。そして、6文字未満の文字列の最小/最大ハッシュをどのように計算すればよいでしょうか? – JeffThompson