回文链表

来源:互联网 发布:淘宝女装上下架时间 编辑:程序博客网 时间:2024/06/08 04:49

题目描述

请编写一个函数,检查链表是否为回文。

给定一个链表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        if(pHead==null){            return false;        }        int len = 0;        ListNode node = pHead;        while(node!=null){            ++len;            node = node.next;        }                if(len==1) return true;        Stack<Integer> stack = new Stack<Integer>();        int n = len/2;        node = pHead;        for(int i=0; i<n; ++i){            stack.push(node.val);            node = node.next;        }        if(len%2==1){ //链表元素个数为奇数个            node = node.next;        }                Integer tmp = null;        while(node!=null&&!stack.isEmpty()){            tmp = stack.pop();            if(tmp!=node.val) return false;            node = node.next;        }        return true;    }}


0 0
原创粉丝点击