题目:
Given a singly linked list, determine if it is a palindrome.
思路:用快慢指针去得到链表的中心位置。
用一个栈去装链表的前半部分。
注意链表奇数偶数的情况。
解法:
package linkedlist;
import java.util.Stack;
//Given a singly linked list, determine if it is a palindrome.
public class PalindromeLinkedList {
public boolean isPalindrome(ListNode head) {
ListNode slow = head;
ListNode fast = head;
Stack<Integer> stack = new Stack<Integer>();
while (fast != null && fast.next != null) {
stack.push(slow.val);
slow = slow.next;
fast = fast.next.next;
}
if (fast != null) {
slow = slow.next;
}
while (slow != null) {
if (slow.val != stack.pop()) {
return false;
}
slow = slow.next;
}
return true;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}