> For the complete documentation index, see [llms.txt](https://yyloumike.gitbook.io/leetcode/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yyloumike.gitbook.io/leetcode/string/0344.-reverse-string.md).

# 0344. Reverse String

Easy  |  String  |  152 ms (98.00%),  21.2 MB (57.89%)

{% tabs %}
{% tab title="❓ Problem Statement" %}

> Source: [LeetCode - Reverse String](https://leetcode.com/problems/reverse-string/)\
> GitHub: [Solution / Performance](https://github.com/yylou/leetcode/tree/main/0344-reverse-string)

Write a function that reverses a string. The input string is given as an array of characters `s`.

**Follow up:** Do not allocate extra space for another array. You must do this by **modifying the input array in-place with `O(1)` extra memory.**
{% endtab %}

{% tab title="✍🏻 Constraints & Example" %}
**Constraints:**

* `1 <= s.length <= 105`
* `s[i]` is a [printable ascii character](https://en.wikipedia.org/wiki/ASCII#Printable_characters).

```
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"]
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="💡 Ideas" %}
{% hint style="info" %}
**Swap two char in each iteration** by two pointers (left/right) **util left >= right.**
{% endhint %}
{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title=" 🤖 Python3" %}

```python
class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        # (base case)
        if len(s) == 1: return s

        # ==================================================
        #  String                                          =
        # ==================================================
        # time  : O(n)
        # space : O(1)
        
        left, right = 0, len(s) - 1
        while left < right:
            s[left], s[right] = s[right], s[left]
            left, right = left + 1, right - 1
```

{% endtab %}

{% tab title="🤖 Java" %}

```java
class Solution {
    /**
     * @time  : O(n)
     * @space : O(1)
     */
    
    public void reverseString(char[] s) {
        /* base case */
        if(s.length == 1) return;
        
        int l = 0, r = s.length - 1;
        while(l <= r) {
            char tmp = s[l];
            s[l] = s[r];
            s[r] = tmp;
                
            l++;
            r--;
        }
    }
}
```

{% endtab %}
{% endtabs %}
