用动态规划方法去解决最长回文问题(python)

首先把代码贴上来镇楼,然后慢慢讲这个思路。从下面得到的思路,动态规划的问题最主要的就是转移方程与状态方程的建立。

思考:当字符串从i到j处是回文,那么从i+1 到j-1处也一定是回文,就这样一直回溯 ,直到i=j ,设置为1,换成我自己的状态方程就是当x = y时,target[i,j] = 1,其他的时候为0 ,然后转移方程是当s1[i] = s1[j] 时,target[i,j] = target[i+1,j-1] + 2。

    编程时遇到的问题就是index溢出问题,这个要仔细思考如何去设置,同时,x需要从大到小遍历,而不是常规的从小到大,因为数据是以对角线交叉传播的。

其实我们在这里还是有错误,错误在哪呢,就是该程序无法解决比如‘qweew’这样字符串的测试,因为该回文是偶数,这样如何解决呢?需要加几句话。

多加个if,当s1[i] = s1[i-1]且i>0时,target[i-1,i]为2,因为此刻比如qweew,i = 3 ,j -1 = 2,此时是回文,不过是2,所以target[2,3] = 2,表示字符串的index从2到3处的字符串是回文。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值