字符串Hash(可处理一些字符串问题)

字符串Hash模板:

//使用 hash[i]=(hash[i-1]*p+idx(s[i]))%mod 求得前缀为i的hash值,
//利用 hash[l..r]=(hash[r]-hash[l-1]*(p^(r-1+1)))%mod 求得s[l,r]的hash值.
//(注意l=0的问题,以及hash[l..r] < 0时要 +mod)
const ll p = 1e7+9;
const ll mod = 1e9+7;

ll Pow[N];
ll Hash[N];
char s1[1005];
char s2[1005];
int len1,len2;

void init()  //预处理字符串1的hash值
{
    Pow[0]=1;
    Hash[0]=s1[0]%mod;
    for(int i=1;i<=len1;i++)      //注意这里要处理到等于len1,因为算次幂有可能有这个值
        Pow[i] = Pow[i-1]*p%mod;  //预处理p的幂值
    for(int i=1;i

你可能感兴趣的:(模板)