哈希法判断字符串回文
对一个字符串的子字符串,判断回文一般需要O(n)的时间,
但是如果预先处理出子字符串的哈希值,则可以在O(1)的时间判断。
具体方法是,如果是小写字母,则可以用26进制数进行记录。
base=26;
for(...)
ha[i]=ha[i-1]*base+(str[i]-'a');
再反着进行一次哈希过程
for(...)
ha2[i]=ha2[i+1]*base+(str[i]-'a');
则子串i~j的哈希值等于
ha[j]-ha[i-1]*pw[j-i]。
其中pw表示base^(i-j)。
但是此时哈希值会非常大,故可能自然溢出,题目的求解有风险。
多模数哈希是待了解的做法(没有风险)。