zoukankan      html  css  js  c++  java
  • 字符串哈希小结(BKDR,RK)

    前言

    A:这么简单的东西,怎么现在才学??

    B:别提了,还不是因为菜o(╥﹏╥)o

    A:那打算讲些什么东西

    B:(BKDRHash)(Rabin-karp)以及简单应用

    简洁

    所谓字符串哈希:其实就是把字符串映射成数值储存下来分别直接比较

    (BKDRHash):程序便于记忆和使用,冲突概率较低,在各大书籍和资料中测试效果位居前列

    (Rabin-karp):便于提取字符串子串

    做法

    (BKDRHash):把字符串当成seed进制数来处理

    const int seed=31;
    inline int BKDRhash(){
    	int H(0),len(strlen(s));
    	for(int i=0;i<len;++i)
    	    H=(H*seed+s[i])&0xFFFFFFF;
    	return H;
    }
    

    (BKDRHash)(h[i]=(s[0]×p^{i}+s[1]×p^{i-1}+...+s[i]×p^0(mod ~x)),手玩能推出(h[i][j]=h[j]-h[i-1]×p^{j-i+1}(mod ~x))

    inline int RK(){
    	int len(strlen(s));
    	for(int i=0;i<len;++i)
    	    H[i]=(H[i-1]*p+s[i])%x;
    	return H[len-1];
    }
    

    经典应用

    挖坑待填

  • 相关阅读:
    批处理实现SQLServer数据库备份与还原
    Axapta物流模块深度历险(二)
    Axapta4.0Tech
    Script#
    Axapta物流模块深度历险(一)
    Agrs Class
    折半的意义
    个人性格
    诚实
    英语学习闪存
  • 原文地址:https://www.cnblogs.com/y2823774827y/p/10372330.html
Copyright © 2011-2022 走看看