コード例 #1
0
def is_palindrome(l):
    l.print_all()
    slow, fast = l.head, l.head
    pos = 0
    while fast and fast.next:
        slow, fast = slow.next, fast.next.next
        pos += 1

    reverse_node = reverse(slow)
    head_node = l.head
    is_palin = True
    while (head_node and reverse_node):
        if (head_node.data == reverse_node.data):
            head_node = head_node.next
            reverse_node = reverse_node.next
        else:
            is_palin = False
            break
    return is_palin


if __name__ == "__main__":
    test_str_arr = ['ab', 'aa', 'aba', 'abba', 'abcba']
    for str in test_str_arr:
        l = SinglyLinkedList()
        for i in str:
            l.insert_value_to_head(i)

        print(is_palindrome(l))
コード例 #2
0
ファイル: palindrome.py プロジェクト: zgsjava/algo
    while fast and fast._next:
        slow = slow._next
        fast = fast._next._next
        position += 1

    reverse_node = reverse(slow)
    head_node = l._head
    is_palin = True
    while (head_node and reverse_node):
        if (head_node.data == reverse_node.data):
            head_node = head_node._next
            reverse_node = reverse_node._next
        else:
            is_palin = False
            break

    return is_palin

if __name__ == '__main__':
    # the result should be False, True, True, True, True
    test_str_arr = ['ab', 'aa', 'aba', 'abba', 'abcba']
    for str in test_str_arr:
        l = SinglyLinkedList()
        for i in str:
            l.insert_value_to_head(i)

        print(is_palindrome(l))