Files
leetcode/apps/docs/content/(01-linear-structures)/two-pointers/344_reverse-string.mdx
T

69 lines
1.7 KiB
Plaintext

---
title: '344. Reverse String'
description: Write a function that reverses a string. The input string is given as an array of characters s
icon: dot
topics:
- { name: "Two Pointers", slug: "two-pointers" }
- { name: "String", slug: "string" }
video: "_d0T_2Lk2qA"
companies:
- { name: "tcs", period: "Thirty Days", frequency: 58.2 }
- { name: "Google", period: "Thirty Days", frequency: 50.2 }
- { name: "Amazon", period: "Thirty Days", frequency: 39.1 }
- { name: "Microsoft", period: "Three Months", frequency: 48.3 }
- { name: "Bloomberg", period: "Three Months", frequency: 46.8 }
- { name: "Meta", period: "Three Months", frequency: 34.5 }
- { name: "Qualcomm", period: "Six Months", frequency: 80.7 }
sidebar:
label: 'Reverse String'
badge: 'Easy'
---
:::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++;
}
};
```