From cb128eae04b72a913f09ffe0d6b38d8f9fd8e83f Mon Sep 17 00:00:00 2001 From: Hidemichi Shimura Date: Mon, 2 Jan 2023 22:18:15 -0800 Subject: [PATCH 1/2] solve 2399. Check Distances Between Same Letters --- 2399.check-distances-between-same-letters.js | 41 ++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 2399.check-distances-between-same-letters.js diff --git a/2399.check-distances-between-same-letters.js b/2399.check-distances-between-same-letters.js new file mode 100644 index 00000000..8c7344d3 --- /dev/null +++ b/2399.check-distances-between-same-letters.js @@ -0,0 +1,41 @@ +/* URL of this problem + * https://leetcode.com/problems/check-distances-between-same-letters/description/ + * + * @param {string} s + * @param {number[]} distance + * @return {boolean} + */ + +var checkDistances = function(s, distance) { + for (let i = 0; i < distance.length; i++) { + // The range of Lowercase English letters on the UTF-16 code table are from 97 to 122. + // Get a matching English letter by adding each index of distance, staring from 0, and 97 + const Char = String.fromCharCode(97 + i); + const ElementCount = CountElementInbetween(s, Char); + + if (!s.includes(Char)) { + continue; + } + + if (distance[i] !== ElementCount) { + return false; + } + } + return true; +}; + +const CountElementInbetween = (str, char) => { + const Chars = [...str]; + const CharIndexes = []; + + Chars.forEach((element, idx) => { + if (element === char) { + CharIndexes.push(idx); + } + }); + + // Count the number of elements in between char + return Math.abs(CharIndexes[0] - CharIndexes[1]) - 1; +} + +module.exports = checkDistances; \ No newline at end of file From 1c12f8a41bd3385b3f1d6f64105ef6d245b5d759 Mon Sep 17 00:00:00 2001 From: Hidemichi Shimura Date: Mon, 2 Jan 2023 22:19:07 -0800 Subject: [PATCH 2/2] test function checkDistances --- checkDistances.test.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 checkDistances.test.js diff --git a/checkDistances.test.js b/checkDistances.test.js new file mode 100644 index 00000000..78dd3e43 --- /dev/null +++ b/checkDistances.test.js @@ -0,0 +1,9 @@ +const checkDistances = require("./2399.check-distances-between-same-letters"); + +test("Return true if the input s is a well-spaced string", () => { + expect(checkDistances("abaccb", [1,3,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])).toBeTruthy(); +}); + +test("Return false if the input s is NOT a well-spaced string", () => { + expect(checkDistances("aa", [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])).toBeFalsy(); +}); \ No newline at end of file