反转链表:
java版本:
class Solution {
public ListNode reverseList(ListNode head) {
ListNode node=head;
Stack<Integer> stack=new Stack<>();
while(node!=null){
stack.push(node.val);
node=node.next;
}
ListNode res=new ListNode(0);
ListNode ans=res;
while(!stack.isEmpty()){
ListNode temp=new ListNode();
temp.val=stack.pop();
res.next=temp;
res=res.next;
// System.out.println(res.val);
}
return ans.next;
}
}
剑指 Offer II 027. 回文链表
本来是考虑都放到数组里面,然后数组里面的元素反转排序,但空间复杂度高,
因此可以将其合成字符串的形式,然后对字符串进行反转后,与原字符串进行比较。
···
/**
-
Definition for singly-linked list.
-
public class ListNode {
int val;
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
-
}
*/
class Solution {
public boolean isPalindrome(ListNode head) {
// 可以字符比较StringBuilder str=new StringBuilder(); StringBuilder reverse=new StringBuilder(); int i=0; while(head!=null){ str.append(head.val); reverse.append(head.val); i++; head=head.next; } reverse.reverse(); return str.toString().equals(reverse.toString());
}
}
···
网友评论