2022-5-15 链表(2022-5-15 linked list)-其他
2022-5-15 链表(2022-5-15 linked list)
234. 回文链表
给你一个单链表的头节点 ,请你判断该链表是否为回文链表。如果是,返回 ;否则,返回 。
head
true
false
1 /**
2 * Definition for singly-linked list.
3 * public class ListNode {
4 * int val;
5 * ListNode next;
6 * ListNode() {}
7 * ListNode(int val) { this.val = val; }
8 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
9 * }
10 */
11 class Solution {
12 public boolean isPalindrome(ListNode head) {
13 StringBuilder sb=new StringBuilder();
14 ListNode point=head;
15 while (point!=null){
16 sb.append(point.val);
17 point=point.next;
18 }
19 ListNode pre=null,cur=head,next=head;
20 while (cur!=null){
21 next=cur.next;
22 cur.next=pre;
23 pre=cur;
24 cur=next;
25 }
26 StringBuilder sb1=new StringBuilder();
27 point=pre;
28 while (point!=null){
29 sb1.append(point.val);
30 point=point.next;
31 }
32 if (sb.toString().equals(sb1.toString())) return true;
33 return false;
34 }
35 }
思路:反转链表判断,但是占用空间不是1。快慢指针找到中点,再反转后面比较,可以占用1空间。
————————
234. Palindrome linked list
Give you the head node of a single linked list. Please judge whether the linked list is a palindrome linked list. If yes, return; Otherwise, return.
head
true
false
1 /**
2 * Definition for singly-linked list.
3 * public class ListNode {
4 * int val;
5 * ListNode next;
6 * ListNode() {}
7 * ListNode(int val) { this.val = val; }
8 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
9 * }
10 */
11 class Solution {
12 public boolean isPalindrome(ListNode head) {
13 StringBuilder sb=new StringBuilder();
14 ListNode point=head;
15 while (point!=null){
16 sb.append(point.val);
17 point=point.next;
18 }
19 ListNode pre=null,cur=head,next=head;
20 while (cur!=null){
21 next=cur.next;
22 cur.next=pre;
23 pre=cur;
24 cur=next;
25 }
26 StringBuilder sb1=new StringBuilder();
27 point=pre;
28 while (point!=null){
29 sb1.append(point.val);
30 point=point.next;
31 }
32 if (sb.toString().equals(sb1.toString())) return true;
33 return false;
34 }
35 }
< strong > idea: reverse the linked list judgment, but the occupied space is not 1. The speed pointer finds the midpoint, and then reverses the later comparison, which can occupy 1 space strong>