Leetcode-回文链表

34 阅读1分钟

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false。

回文指的是正着读和反着读都是一样的,如果用的是python,直接使用vals == vals[::-1],否则用java的话,需要使用双指针的用法

class Solution(object):
    def isPalindrome(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        vals= []
        current = head
        while current is not None:
            vals.append(current.val)
            current= current.next
        # vals[::-1]: 这是Python中用于反转列表的语法。[::-1] 表示从后往前切片,即反转整个列表。
        # vals == vals[::-1]: 这是比较两个列表是否相等的条件语句。它检查列表 vals 是否等于它的反转版本。
        return vals == vals[::-1]
// 使用双指针判断是否回文
        int front = 0;
        int back = vals.size() - 1;
        while (front < back) {
            if (!vals.get(front).equals(vals.get(back))) {
                return false;
            }
            front++;
            back--;
        }
        return true;