PS
Leetcode 234. Palindrome Linked List
Bryan Lee
2022. 4. 26. 13:44
문제 이해
- 링크드 리스트가 팰린드롬인지 아닌지 판별하라
해결 전략
- 이 문제를 푸는데는 여러 가지 전략이 있습니다.
-> 그 중에서 '뒤집어서 비교하는' 전략을 선택했습니다.
- reverseAndClone 메소드를 통해서 뒤집은 ListNode를 만들고,
isEqual 메소드를 통해서 비교해줍니다.
구현
class Solution {
public ListNode reverseAndClone(ListNode node){
ListNode head = null;
while(node != null){
ListNode n = new ListNode(node.val);
n.next = head;
head = n;
node = node.next;
}
return head;
}
public boolean isPalindrome(ListNode head) {
ListNode reversed = reverseAndClone(head);
return isEqual(head, reversed);
}
public boolean isEqual(ListNode one, ListNode two){
while(one != null && two != null){
if(one.val != two.val){
return false;
}
one = one.next;
two = two.next;
}
return one == null && two == null;
}
}
피드백
- 링크드 리스트를 뒤집는 방법을 알아야 합니다.