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

来源:互联网 发布:matlab入门 知乎 编辑:程序博客网 时间:2024/05/12 03:10

 先讲一下自己的思想:
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时,当遇到相同长度的回文字串时,输出第一个回文子串。

 

 

原创粉丝点击