public class PalindromeList {
public boolean chkPalindrome(ListNode A) {
// write code here
ListNode fast = A; //都指向头结点
ListNode slow = A;
//找mid结点
while(fast != null && fast.next != null){
fast = fast.next.next;
slow = slow.next;
}
ListNode nextMid = slow.next; //mid的下一个结点
slow.next = null; //断链
ListNode pre = null; //标记逆置后的表头
ListNode next = null;
//逆置
while(nextMid != null){
next = nextMid.next;
nextMid.next = pre;
pre = nextMid;
nextMid = next;
}
//依次比较两链表
while(A != null && pre != null){
if(A.val != pre.val){
return false;
}
A = A.next;
pre = pre.next;
}
return true;
}
}
链表的回文结构
最新推荐文章于 2024-06-04 22:24:24 发布