题解 | #NC96 判断一个链表是否为回文结构#
判断一个链表是否为回文结构
http://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f
和力扣 234. 回文链表 相同
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类 the head
* @return bool布尔型
*/
public boolean isPail (ListNode head) {
// write code here
if (head == null || head.next == null) return true;
ListNode A_end = mid(head);
ListNode B_start = A_end.next;
A_end.next = null;
B_start = reverse(B_start);
boolean res = compare(head, B_start);
A_end.next = reverse(B_start);
return res;
}
public ListNode mid(ListNode head) {
ListNode f = head;
ListNode s = head;
while (f.next != null && f.next.next != null) {
f = f.next.next;
s = s.next;
}
return s;
}
public ListNode reverse(ListNode head) {
ListNode pre = null;
ListNode tmp = null;
while (head != null) {
tmp = head.next;
head.next = pre;
pre = head;
head = tmp;
}
return pre;
}
public boolean compare(ListNode A, ListNode B) {
while (B != null) {
if (A.val != B.val) return false;
A = A.next;
B = B.next;
}
return true;
}
}