Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文

字符串哈希

己化被
56 0 0
何为字符串哈希
0 {. a* [* J# R: r- ?. B+ g1 f* }所谓字符串哈希,即对一个字符串形成单向加密的过程,使其拥有尽可能独一无二的编号,通过这种低概率的编号重复,使得字符串的匹配尽可能高效。! w  N( _% K" n3 Z- G
如何字符串哈希
$ {6 a, _. u0 U5 q& q9 \最普遍的字符串哈希方式,即进制哈希。核心是将字符串上的每一个字符理解为一个数字,然后固定一个进制,将该字符串转化成一个该进制下的的数,作为其哈希值,然后通过比对哈希值,判断两个字符串是否相等。
, }3 f7 z/ ^4 E) |ll Hash(char s[])
0 V  p9 i+ V4 m. `{' {1 `- i' o# ^& `( b% N
        int len = strlen(s);
5 F+ L, d8 n  t4 |        ll ans = 0;
/ A2 f" Z9 H4 w- _' d        for (int i = 0; i
$ P/ q: I+ ^$ l9 d* F8 W( \而对于再好的哈希,也不可避免会产生冲突,此时可以通过一些方法来尽可能降低哈希冲突。
5 t' V' b" H4 A1 d% `! J1.无错哈希
$ ?; T- n# m" g+ Y3 u2 L% U6 E% u原理就是当一个字符串得到一个哈希值后,判定该哈希值是否已经使用过,如果使用的话就不断加上一个大质数,使得不产生冲突。该方式的缺陷在于会十分消耗空间。
( c; V' P& r' F& Z3 i0 e" W' y2.多重哈希
( T5 Q- \" g( C* `9 J! j* G给定不唯一的哈希函数,对每一个字符串生成多个哈希值,由此来判断两个字符串是否相等。该方法会增加空间和时间,但也提高了正确性。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

己化被 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    27