Skip to content

Commit dd3d408

Browse files
authored
Create 0234_Palildrome_LL.java
1 parent 549a265 commit dd3d408

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

0234_Palildrome_LL.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* public class ListNode {
3+
* int val;
4+
* ListNode next;
5+
* ListNode() {}
6+
* ListNode(int val) { this.val = val; }
7+
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
8+
* }
9+
*/
10+
class Solution {
11+
public boolean isPalindrome(ListNode head) {
12+
if(head.next == null){
13+
return true;
14+
}
15+
16+
ListNode middleNode = getMiddleNode(head);
17+
ListNode head1 = head;
18+
ListNode head2 = middleNode.next;
19+
middleNode.next = null;
20+
head2 = reverseLinkedList(head2);
21+
22+
while(head1!=null && head2!=null){
23+
if(head1.val != head2.val){
24+
return false;
25+
}
26+
head1 = head1.next;
27+
head2 = head2.next;
28+
}
29+
30+
return true;
31+
}
32+
33+
public ListNode getMiddleNode(ListNode node){
34+
ListNode slow = node;
35+
ListNode fast = node.next;
36+
37+
while(fast!=null && fast.next!=null){
38+
slow = slow.next;
39+
fast = fast.next.next;
40+
}
41+
42+
return slow;
43+
}
44+
45+
public ListNode reverseLinkedList(ListNode node){
46+
if(node==null || node.next == null){
47+
return node;
48+
}
49+
50+
ListNode newHead = reverseLinkedList(node.next);
51+
node.next.next = node;
52+
node.next = null;
53+
return newHead;
54+
}
55+
}

0 commit comments

Comments
 (0)