今天为大家带来一个题目,在学习String的时候,就已经做过一个回文字符串的题目,现在再做一个链表回文的题目
思路分三步
1.找中间节点
2.翻转中间结点以后的结点
3.一个结点从前往后,一个结点从后往前,直到相遇
当结点个数为偶数结点的时候,head.next=slow时就是一个回文字符串,其他地方都是一样的
public class PalindromeList { public boolean chkPalindrome(ListNode A) { // write code here if(A==null){ return false; } if(A.next==null){ return true; } ListNode fast=A; ListNode slow=A; while(fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next; } ListNode cur=slow.next; while(cur!=null){ ListNode curNext=cur.next; cur.next=slow; slow=cur; cur=curNext; } while(A!=slow){ if(A.val!=slow.val){ return false; } if(A.next==slow){ return true; } A=A.next; slow=slow.next; } return true; } }
这个题目就讲解到这,我们下期再见!!!