回文链表(解题报告)

来源:互联网 发布:李天生sqlserver 编辑:程序博客网 时间:2024/06/04 00:25

题目描述

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

给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。

测试样例:
{1,2,3,2,1}
返回:true
{1,2,3,2,3}
返回:false

解题思路:利用栈进行反转对比操作,注意快慢指针的使用,链表长度为奇数或者偶数时的特殊处理即可。


public boolean isPalindrome(ListNode pHead) {        if(pHead==null||pHead.next==null){        return false;        }ListNode fast=pHead;ListNode slow=pHead;Stack<Integer> s=new Stack<Integer>();s.push(pHead.val);while(fast.next!=null&&fast.next.next!=null){slow=slow.next;fast=fast.next.next;s.push(slow.val);}if(fast.next==null){s.pop();}while(slow.next!=null){slow=slow.next;if(slow.val!=s.pop()){return false;}}return true;    }


原创粉丝点击