234. Palindrome Linked List

Posted 高数考了59

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了234. Palindrome Linked List相关的知识,希望对你有一定的参考价值。

判定链表是否为回文

方法一:借助一个栈,将链表节点值全部压入栈中,再弹出,依次比较。本质是把链表节点值逆置,然后与原链表节点值比较。全部相等则为回文。

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 static int wing=[]()
10 {
11     std::ios::sync_with_stdio(false);
12     cin.tie(NULL);
13     return 0;
14 }();
15 
16 class Solution 
17 {
18 public:
19     bool isPalindrome(ListNode* head) 
20     {
21         stack<int> istack;
22         ListNode *pr=head;
23         while(pr)
24         {
25             istack.push(pr->val);
26             pr=pr->next;
27         }         
28         while(head)
29         {
30             if(head->val!=istack.top())
31                 return false;
32             head=head->next;
33             istack.pop();
34         }
35         return true;
36     }
37 };

方法二:先计算链表长度,把前半部分链表逆置,然后比较新链和剩下那段链节点值是否依次相等。

以上是关于234. Palindrome Linked List的主要内容,如果未能解决你的问题,请参考以下文章

234. Palindrome Linked List

LC.234.Palindrome Linked List

234. Palindrome Linked List

Leetcode 234. Palindrome Linked List

234. Palindrome Linked List

234. Palindrome Linked List