在一个字符串中查找最长回文子串

 先讲一下自己的思想:
1. 设置三个指针ppre,pre,post,依次指向字符串第一个,第二个,第三个。判断第一个和第二个(回文子串长度为偶数时);判断第一个和第三个(回文子串长度为奇数时)。设置一个num[SIZE]数组记录回文子串的长度,一个ptr[SIZE]指针数组记录回文子串的第一个子串。

2. 首先将字符串小于3的情况进行处理,然后大于等于3时,将ppre,pre,post依次赋值。

3. 设置循环,先判断ppre和post是否相等。若相等,就将ppre--和post++继续进行比较;不相等时,跳出,并将post值复原。再判断pre和post的值是否相等,若相等,就将pre--和post++继续进行比较;不相等时,跳出,并将post值复原。以上两个跳出后,注意记录回文子串的长度和首地址到num[SIZE]和ptr[SIZE]中。完成后,将ppre,pre和post依次向前走一步,继续。

4. 最后将记录的值赋值到str中。
   程序中的一个bug时,当遇到相同长度的回文字串时,输出第一个回文子串。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值