哈希法判断字符串回文

对一个字符串的子字符串,判断回文一般需要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)。

 

但是此时哈希值会非常大,故可能自然溢出,题目的求解有风险。

 

多模数哈希是待了解的做法(没有风险)。

posted @ 2022-06-06 21:46  80k  阅读(295)  评论(0)    收藏  举报