哈希法判断字符串回文

对一个字符串的子字符串,判断回文一般需要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 @   80k  阅读(251)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示