オンラインプログラミング--回文チェーンテーブル


タイトルの説明
チェーンテーブルが返信されているかどうかを確認する関数を作成してください.チェーンテーブルListNode*pHeadを指定すると、チェーンテーブルが返信であるかどうかを表すboolを返します.テストサンプル:{1,2,3,2,1}戻り:true{1,2,3,2,3}戻り:false
import java.util.*;
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Palindrome {
    public boolean isPalindrome(ListNode pHead) {
        // write code here
            // write code here
        int length = 0;   //    
        ListNode pHeadlength = pHead;
        while (pHeadlength.next != null) {
            length++;
            pHeadlength = pHeadlength.next;
        }
        length++;   

        Stack<Integer> stack = new Stack<Integer>();
        if (length % 2 == 1) {  //for (int i = 0; i < length / 2; i++) {
                stack.push(pHead.val);
                pHead = pHead.next;
            }
            pHead = pHead.next;
        } else {
            for (int i = 0; i < length / 2; i++) {
                stack.push(pHead.val);
                pHead = pHead.next;
            }
        }
        while (pHead != null) {
            if (pHead.val != stack.pop()) {
                return false;
            }
            pHead=pHead.next;
        }
        return true;   
    }
}