Visit original link: 344. Reverse String - LeetCode Python/Java/C++/JS/C#/Go/Ruby Solutions for a better experience!
LeetCode link: 344. Reverse String, difficulty: Easy.
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.
Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
1 <= s.length <= 10^5s[i]is a printable ascii character.
Hint 1
The entire logic for reversing a string is based on using the opposite directional two-pointer approach!- This problem can be solved in one line of code using the built-in
sort()method of the programming language. If this question is asked in an interview, the questioner should be testing how to do it without the built-in method. - Use two pointers with opposite directions, initially one pointer points to the index
0and the other pointer points to the indexs.length - 1. - Traverse the elements of the array, and the loop condition is
while (left < right). In the loop body,left += 1,right -= 1. - In the loop body, swap the two values.
- The above is the template for
two pointersinopposite directions.
-
Use two pointers with opposite directions, initially one pointer points to the index
0and the other pointer points to the indexs.length - 1.left = 0 right = s.length - 1
-
Traverse the elements of the array, and the loop condition is
while (left < right). In the loop body,left += 1,right -= 1.left = 0 right = s.length - 1 while left < right # 1 left += 1 # 2 right -= 1 # 3 end
-
In the loop body, swap the two values.
left = 0 right = s.length - 1 while left < right s[left], s[right] = s[right], s[left] # 1 left += 1 right -= 1 end
- Time complexity:
O(N). - Space complexity:
O(1).
class Solution {
public void reverseString(char[] s) {
var left = 0;
var right = s.length - 1;
while (left < right) {
var leftValue = s[left];
s[left] = s[right];
s[right] = leftValue;
left++;
right--;
}
}
}class Solution:
def reverseString(self, s: List[str]) -> None:
left = 0
right = len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1class Solution {
public:
void reverseString(vector<char>& s) {
auto left = 0;
auto right = s.size() - 1;
while (left < right) {
swap(s[left], s[right]);
left++;
right--;
}
}
};var reverseString = function (s) {
let left = 0
let right = s.length - 1
while (left < right) {
[s[left], s[right]] = [s[right], s[left]]
left++
right--
}
};public class Solution
{
public void ReverseString(char[] s)
{
int left = 0;
int right = s.Length - 1;
while (left < right)
{
(s[left], s[right]) = (s[right], s[left]);
left++;
right--;
}
}
}func reverseString(s []byte) {
left := 0
right := len(s) - 1
for left < right {
s[left], s[right] = s[right], s[left]
left++
right--
}
}def reverse_string(s)
left = 0
right = s.size - 1
while left < right
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
end
end// Welcome to create a PR to complete the code of this language, thanks!Dear LeetCoders! For a better LeetCode problem-solving experience, please visit website LeetCode.to: Dare to claim the best practices of LeetCode solutions! Will save you a lot of time!
Original link: 344. Reverse String - LeetCode Python/Java/C++/JS/C#/Go/Ruby Solutions.
GitHub repository: leetcode-python-java.