Given a linked list, swap every two adjacent nodes and return its head. You must solve the problem without modifying the values in the list’s nodes (i.e., only nodes themselves may be changed.)
Example 1:
Input: head = [1,2,3,4]
Output: [2,1,4,3]
Explanation:

Example 2:
Input: head = []
Output: []
Example 3:
Input: head = [1]
Output: [1]
Example 4:
Input: head = [1,2,3]
Output: [2,1,3]
Constraints:
- The number of nodes in the list is in the range
[0, 100]. 0 <= Node.val <= 100
My Answer
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def __str__(self):
item = [self.val]
while self.next is not None:
self = self.next
item.append(self.val)
return str(item)
class Solution:
def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
if head is None or head.next is None:
return head
dummyNode = ListNode()
previous_node = dummyNode
curent_node = head
while curent_node and curent_node.next:
previous_node.next = curent_node.next
curent_node.next = previous_node.next.next
previous_node.next.next = curent_node
previous_node = curent_node
curent_node = curent_node.next
return dummyNode.nextLeetCode - The World’s Leading Programming Learning Platform
technical interview