LeetCode#234. Palindrome Linked List

来源:互联网 发布:淘宝软妹服装店铺 编辑:程序博客网 时间:2024/06/03 21:28
  • 题目:判断一个链表是否为回文
  • 难度:Easy
  • 思路:
  • 代码:
public class Solution {    public boolean isPalindrome(ListNode head) {        if(head == null || head.next == null){            return true;        }        int len = 0;        ListNode node = head;        while(node != null){            len++;            node = node.next;        }        int count = len/2-1;        ListNode pre = null;//指向前半部分的指针        ListNode curr = head;//指向后半部分的指针        ListNode next = curr.next;        while(count >= 0){            count--;            curr.next = pre;//反转前半部分的链表            pre = curr;            curr = next;            next = curr.next;        }        //如果链表长度为奇数,则后半部分的节点需要跳过第一个节点        if((len&1) == 1){            curr = next;        }        while(curr != null && pre != null){            if(curr.val != pre.val){                return false;            }            curr = curr.next;            pre = pre.next;        }        return true;    }}
0 0