首页 > 代码库 > 算法--链表的回文结构

算法--链表的回文结构

转载请标明出处http://www.cnblogs.com/haozhengfei/p/abb04e825ba4b847dcb704605ea1cd36.html 


链表的回文结构

技术分享
技术分享
技术分享
技术分享
技术分享
技术分享

技术分享
技术分享
技术分享
技术分享
技术分享
 
链表回文结构练习

第9节 链表的回文结构练习题

 

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

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

测试样例:
{1,2,3,2,1}
返回:true
{1,2,3,2,3}
返回:false
 
 
 
 
 
1
import java.util.*;
2

3
/*
4
public class ListNode {
5
    int val;
6
    ListNode next = null;
7

8
    ListNode(int val) {
9
        this.val = val;
10
    }
11
}*/
12
public class Palindrome {
13
    public boolean isPalindrome(ListNode pHead) {
14
        if (pHead == null || pHead.next == null)
15
            return false;
16

17
        ListNode slow = pHead;
18
        ListNode quick = pHead;
19
        Stack<Integer> stack = new Stack<>();
20
        while (quick != null && quick.next != null) {
21
            stack.push(slow.val);
22
            slow = slow.next;
23
            quick = quick.next.next;
24
        }
25
        /**
26
         * 5 7 3 2 3 7 5
27
         * 4 3 2 1 1 2 3 4
28
         */
29
        if (quick != null && quick.next == null) {
30
            slow = slow.next;
31
            // stack.pop();
32
        }
33
        while (!stack.isEmpty() && slow != null) {
34
            int val = stack.pop();
35
            // System.out.print(val + " ");
36
            if (val != slow.val)
37
                return false;
38
            slow = slow.next;
39
        }
40
        return true;
41
    }
42
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
 

算法--链表的回文结构