Given the head of a singly linked list, return true if it is a palindrome.
Example 1:
Input: head = [1,2,2,1]
Output: true
Example 2:
Input: head = [1,2]
Output: false
Constraints:
The number of nodes in the list is in the range [1, 105].
0 <= Node.val <= 9
class Solution:
def isPalindrome(self, head: Optional[ListNode]) -> bool:
n_head = getNodesInArray(head)
string = ''.join(str(_) for _ in n_head)
if string != string[::-1]:
return False
else :
return True
def getNodesInArray(self):
nodes = []
current = self
while current is not None:
nodes.append(current.val)
current = current.next
return nodes
[실행 결과]
Runtime: 914 ms / Memory : 47.4MB
[접근법]
저번에 적었던 코드를 써먹자 해서 연결 리스트를 문자열로 변환해주는 함수를 만들고 변환해준 후 써먹었다.
맨 처음문자부터 뒤로 하나씩 = 맨 뒤에서부터 앞으로 하나씩 비교하면서 틀리면 바로 False
[느낀점]
정수형 리스트일때는 반드시 ''.join(str() for in n_head)로 적어서 바꿔주기!