본문 바로가기

코딩/leetcode

[leetcode]234 팰린드롬 연결리스

https://leetcode.com/problems/palindrome-linked-list/

 

Palindrome Linked List - LeetCode

Can you solve this real interview question? Palindrome Linked List - Given the head of a singly linked list, return true if it is a palindrome or false otherwise.   Example 1: [https://assets.leetcode.com/uploads/2021/03/03/pal1linked-list.jpg] Input: hea

leetcode.com

문제 : 연결리스트가 팰린드롬 구조인지 판별하라.

 

입력 : 1 ->2 ->2->1

 

출력 : True

 

팰린드롬 구조란?

eye, hannah처럼 거꾸로 읽어도 똑같은 문장이나 단어... 이효리,, 리효리....

 

1. 리스트로 변환해서 값을 pop해 확인한다.

 

#파이썬 기본 연결리스트 구조

class Node():
    def __init(self,data):
        self.data= data
        self.next = None


class Solution(object):
    def isPalindrome(self, head):
        result =[]
        current = head
        while current.next is not None:
            result.append(current.data)
            current = current.next
        
    
        while len(result) >0:
            if result.pop() == result.pop(-1):
                continue 
            else :
                return False
        return True

 

코드 분석

나의 경우 current.next 가 None이 아닌 경우까지 반복문을 돌아주고 list에 append해주고, 마지막값을 따로 append해주었는데 그냥 current is not None으로 해주면 굳이 두번 해주지 않고 깔끔하게 해줄 수 있다. 

 while len(result) >0:
            if result.pop() == result.pop(-1):
                continue 
            else :
                return False
        return True

 

리스트 내부에서 확인