05_回文链表

2019-10-31  本文已影响0人  butters001
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

# 88ms
class Solution(object):
    def isPalindrome(self, head):
        """
        :type head: ListNode
        :rtype: bool
        解题思路:首先想到 反转之后和原链表相等 即为true 不太可行 pass
        解题思路2:遍历 把值一次放到列表里,reverse列表再比较     结果✅
        """
        list1 = []
        while head:
            list1.append(head.val)
            head = head.next
        import copy
        list2 = copy.copy(list1)
        list1.reverse()
        if list1 == list2:
            return True
        return False


# leetcode最优解  44ms 和我的思路一样 只是判断是否是回文列表的方法不一样
# 他是通过前后索引判断是否是回文 可以学习一下 应该也可以用在字符串回文
class Solution2(object):
    def isPalindrome(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        if head is None:
            return True
        l = []
        while head is not None:
            l.append(head.val)
            head = head.next
        for i in range(len(l) // 2):
            if l[i] != l[len(l) - 1 - i]:
                return False
        return True

上一篇下一篇

猜你喜欢

热点阅读