Medium
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]
Example 2:
Input: head = []
Output: []
Example 3:
Input: head = [1]
Output: [1]
Constraints:
[0, 100].0 <= Node.val <= 100To solve the “Swap Nodes in Pairs” problem in Java with a Solution class, we can traverse the linked list while swapping pairs of nodes. Here are the steps:
Solution class.swapPairs that takes the head of a linked list as input and returns the head of the modified list.next pointer to the head of the input list. This dummy node will serve as the new head of the modified list.prev, first, and second.first and second are not null:
    first to the next pointer of prev.second to the next pointer of first.next pointer of prev to the next pointer of second.next pointer of second to first.prev to first.first to first.next (which is the next pair of nodes).next pointer of the dummy node, which points to the head of the modified list.Here’s the implementation:
public class Solution {
    public ListNode swapPairs(ListNode head) {
        // Create a dummy node and point its next to the head
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        
        // Initialize pointers
        ListNode prev = dummy;
        ListNode first, second;
        
        // Swap pairs of nodes
        while (prev.next != null && prev.next.next != null) {
            first = prev.next;
            second = first.next;
            
            // Swap nodes
            prev.next = second;
            first.next = second.next;
            second.next = first;
            
            // Move prev to the next pair of nodes
            prev = first;
        }
        
        return dummy.next;
    }
}
This implementation provides a solution to the “Swap Nodes in Pairs” problem in Java without modifying the values in the list’s nodes.