实现:利用栈先进后出的特点。设链表长为N
- 若N为偶数,则将链表右边N/2部分的数据压入栈,
全部出栈后判断它是否与原链表的左边N/2部分的数据相同。 - 若N为奇数,则忽略中间的数,将右边(N-1)/2的内容压入栈,
检查栈顶到栈底值是否与左边(N-1)/2部分的内容相同。
(注意:题目中的是回文结构与有回文结构时不同的!)
注意与删除链表的中间节点的不同,删除链表的中间节点是为了获得左半边的最后一个数(123)45
而判断回文中,是为了获得右半边第一个数123(45)。
1 | import java.util.Stack; |
1 | //Test |
判断一个字符串是否是回文结构
实现:
- 先将字符串转成字符数组。
- 两个指针start从头开始往后移,end从后往前移,只要start<end就循环。
- 判断是否相等。
- 一旦start>=end就退出循环(等号说明到了中间元素了,不需要比较)。
1 | char[] cha = str.tocharArray(); |