---
title: '344. Reverse String'
description: Write a function that reverses a string. The input string is given as an array of characters s
sidebar:
  label: 'Reverse String'
  badge: 'Easy'
---

Two Pointers

:::warning
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 <= 10^5`
- `s[i]` is a printable ascii character.

## Approach

```mermaid
flowchart TD
  S(["reverseString(s)"]) --> I["i = 0, j = s.length - 1"]
  I --> W{"i < j?"}
  W -- no --> E(["done — s was reversed in place, nothing returned"])
  W -- yes --> A["swap s[i] and s[j]"]
  A --> B["i++; j--"]
  B --> W
```

## Solution

```js
/**
 * @param {character[]} s
 * @return {void} Do not return anything, modify s in-place instead.
 */
var reverseString = function(s) {
    let i = 0;
    let j = s.length - 1;
    
    while (i < j) {
        [s[i], s[j]] = [s[j], s[i]];
        j--;
        i++;
    }   
};
```

## Explanation

[Reverse String - 3 Ways - Leetcode 344 - Python](https://www.youtube.com/watch?v=_d0T_2Lk2qA)
