Skip to content

Latest commit

 

History

History
220 lines (156 loc) · 4.83 KB

File metadata and controls

220 lines (156 loc) · 4.83 KB

344. Reverse String - LeetCode Python/Java/C++/JS/C#/Go/Ruby Solutions

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.

LeetCode description of "344. Reverse String"

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]

[Hints]

Hint 1 The entire logic for reversing a string is based on using the opposite directional two-pointer approach!

Intuition

  1. 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.
  2. Use two pointers with opposite directions, initially one pointer points to the index 0 and the other pointer points to the index s.length - 1.
  3. Traverse the elements of the array, and the loop condition is while (left < right). In the loop body, left += 1, right -= 1.
  4. In the loop body, swap the two values.
  5. The above is the template for two pointers in opposite directions.

Step-by-Step Solution

  1. Use two pointers with opposite directions, initially one pointer points to the index 0 and the other pointer points to the index s.length - 1.

    left = 0
    right = s.length - 1
  2. 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
  3. 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

Complexity

  • Time complexity: O(N).
  • Space complexity: O(1).

Java

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--;
        }
    }
}

Python

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 -= 1

C++

class 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--;
        }
    }
};

JavaScript

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--
  }
};

C#

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--;
        }
    }
}

Go

func reverseString(s []byte)  {
    left := 0
    right := len(s) - 1

    for left < right {
        s[left], s[right] = s[right], s[left]

        left++
        right--
    }
}

Ruby

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

Other languages

// 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.