Skip to content

Latest commit

History

History
220 lines (156 loc) 路 4.84 KB

File metadata and controls

220 lines (156 loc) 路 4.84 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 Solutions

  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.blog: 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.