From ba2afdcc409a7c8e72df030ee7fb5dbef6945462 Mon Sep 17 00:00:00 2001 From: Gajay <6947656+GAjay@users.noreply.github.com> Date: Sun, 18 Oct 2026 01:30:50 +0000 Subject: [PATCH] feat(daily): implement 2026-10-18 reverse-string --- automation/state.json | 4 ++-- problems/2026-10-18-reverse-string/README.md | 21 +++++++++++++++++++ .../reverse-string.test.js | 21 +++++++++++++++++++ .../2026-10-18-reverse-string/solution.js | 15 +++++++++++++ 4 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 problems/2026-10-18-reverse-string/README.md create mode 100644 problems/2026-10-18-reverse-string/reverse-string.test.js create mode 100644 problems/2026-10-18-reverse-string/solution.js diff --git a/automation/state.json b/automation/state.json index ecc9f6f..87ed61a 100644 --- a/automation/state.json +++ b/automation/state.json @@ -1,4 +1,4 @@ { - "catalogIndex": 6, - "lastRunDate": "2026-10-17" + "catalogIndex": 7, + "lastRunDate": "2026-10-18" } diff --git a/problems/2026-10-18-reverse-string/README.md b/problems/2026-10-18-reverse-string/README.md new file mode 100644 index 0000000..085e1ec --- /dev/null +++ b/problems/2026-10-18-reverse-string/README.md @@ -0,0 +1,21 @@ +# Reverse String + +## Problem + +Write a function that reverses a string. The input string is given as an array of characters `s`. You must do this **in-place** with `O(1)` extra memory. + +## Examples + +``` +Input: s = ["h","e","l","l","o"] +Output: ["o","l","l","e","h"] +``` + +## Constraints + +- `1 <= s.length <= 10^5` +- `s[i]` is a printable ascii character. + +## Notes + +Implement `reverseString` in `solution.js`. diff --git a/problems/2026-10-18-reverse-string/reverse-string.test.js b/problems/2026-10-18-reverse-string/reverse-string.test.js new file mode 100644 index 0000000..fcf4419 --- /dev/null +++ b/problems/2026-10-18-reverse-string/reverse-string.test.js @@ -0,0 +1,21 @@ +import { describe, it } from "node:test"; +import assert from "node:assert/strict"; +import { reverseString } from "./solution.js"; + +describe("reverseString", () => { + it("hello", () => { + const input = structuredClone(["h","e","l","l","o"]); + const args = [["h","e","l","l","o"]]; + args[0] = input; + reverseString(...args); + assert.deepEqual(input, ["o","l","l","e","h"]); + }); + + it("odd length", () => { + const input = structuredClone(["a","b","c"]); + const args = [["a","b","c"]]; + args[0] = input; + reverseString(...args); + assert.deepEqual(input, ["c","b","a"]); + }); +}); diff --git a/problems/2026-10-18-reverse-string/solution.js b/problems/2026-10-18-reverse-string/solution.js new file mode 100644 index 0000000..df6b1d2 --- /dev/null +++ b/problems/2026-10-18-reverse-string/solution.js @@ -0,0 +1,15 @@ +/** + * @param {string[]} s + * @returns {void} + */ +export function reverseString(s) { + let left = 0; + let right = s.length - 1; + while (left < right) { + const tmp = s[left]; + s[left] = s[right]; + s[right] = tmp; + left++; + right--; + } +}