344. Reverse String
DifficultyEasy
Description
Write a function that reverses a string. The input string is given as an array of characters s.
You must do this by modifying the input array in-place with O(1) extra memory.
Example 1:
Input: s = ["h","e","l","l","o"] Output: ["o","l","l","e","h"]
Example 2:
Input: s = ["H","a","n","n","a","h"] Output: ["h","a","n","n","a","H"]
Constraints:
1 <= s.length <= 105s[i]is a printable ascii character.
Solutions
Solution 1: Two Pointers
Thinking
Reverse a character array in place. A second buffer uses \(O(n)\) space. Swapping ends is enough.
Two pointers \(i,j\) start at the ends, swap, and move inward until they meet. One pass, constant extra space.
We use two pointers \(i\) and \(j\), initially pointing to the start and end of the array respectively. Each time, we swap the elements at \(i\) and \(j\), then move \(i\) forward and \(j\) backward, until \(i\) and \(j\) meet.
The time complexity is \(O(n)\), where \(n\) is the length of the array. The space complexity is \(O(1)\).
1 2 3 4 5 6 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 | |