leetcode专题——回文串问题

回文串问题

根据回文特性进行分析

具体问题具体分析,往往思路就是从这里来的。回文问题主要是判断回文的时间复杂度太高,可以考虑DP、哈希表、字典树、字符串哈希、KMP、马拉车等优化对回文的判断。

336.回文对

image-20201009142503286

暴力解

有些问题可以先尝试,说不定能通过,但是形如O(n!)或者指数级复杂度就可以不考虑了。

DP

一般是子序列问题,迫不得已,没办法直接中心扩展。考虑类似LCS问题的区间DP思路

516.最长回文子序列

image-20201009141839075

中心扩展算法

从某个位置向两侧扩展,避免暴力法枚举所有的子串。

5.最长回文子串
image-20201009140738989

647.回文子串

image-20201009142042908

字符串哈希

一般用于解决字符串是否相等的情况,找子串也比较有用,相当于预先存储了字符串。

字符串哈希,将字符串看作base进制的数,其对应的10进制值就是其哈希值,因为哈希值很容易超出范围,所以需要模一个很大的质数,一般来讲还是不容易哈希冲突的。一般来说,我们选取一个大于字符集大小(即字符串中可能出现的字符种类的数目)的质数作为base,再选取一个在字符串长度平方级别左右的质数作为 mod,产生哈希碰撞的概率就会很低。

214.最短回文串

image-20201009141615803

马拉车

似乎很多问题都能用这个,但是我知难而退了。。。

KMP

214.最短回文串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值