zoukankan      html  css  js  c++  java
  • 字符串hash

    就是把某个字符串把某个串转化成一个数,使相同的串转化成的数一定相同,不同的串转化成的数尽量不同。

    最常用的是进制哈希。(hash[i]=(hash[i-1]*p+(ll)s[i])\%mod)(其中(p)没有要求,但一般取一个质数,如(131,13331)等;(mod)要取一个大数,最方便的就是开(unsigned long long),即(mod=2^{64})

    然后我们对于一个串做处理后,就可以知道任意(l)(r)位的字符串的哈希值了。具体的,有(hash[lsim{r}]=(hash[r]-hash[l-1]*p^{r-l+1}\%mod+mod)\%mod)。所以我们要预处理(p^i)

    防止冲突可以用双(hash),即取两个不同的模数。

    学这个主要是为了避免写(kmp)

  • 相关阅读:
    Rx
    linux rpm 安装包制作
    kamctl start
    dedicated bearer
    Kamailio
    EPC sequence
    TD-LTE技术原理与系统设计
    SS7
    SCTP
    GTP
  • 原文地址:https://www.cnblogs.com/andysj/p/13916636.html
Copyright © 2011-2022 走看看