From 168529b69413266d79689607c38a38dc686f9793 Mon Sep 17 00:00:00 2001 From: koronya Date: Tue, 28 Apr 2026 03:26:28 +0900 Subject: [PATCH] [JS][7kyu] How Many Lonely Letters? --- .../7kyu/how-many-lonely-letters/koronya.js | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 codewars/7kyu/how-many-lonely-letters/koronya.js diff --git a/codewars/7kyu/how-many-lonely-letters/koronya.js b/codewars/7kyu/how-many-lonely-letters/koronya.js new file mode 100644 index 000000000..5f5617f10 --- /dev/null +++ b/codewars/7kyu/how-many-lonely-letters/koronya.js @@ -0,0 +1,42 @@ +// [JS][7kyu] How Many Lonely Letters? +// how-many-lonely-letters +// https://www.codewars.com/kata/69cda5b85599f307742ce70a/train/javascript + +const countLonelyLetters = (text) => { + const strMap = new Map() + const arr = text + .split('') + .filter((letter) => /[a-zA-Z]/.test(letter)) + .map((letter) => letter.toLowerCase().charCodeAt(0)) + .forEach((code) => { + strMap.set(code, (strMap.get(code) || 0) + 1) + }) + let count = 0 + strMap.forEach((value, key) => { + if (value === 1 && !strMap.has(key - 1) && !strMap.has(key + 1)) { + count += 1 + } + }) + + return count +} + +countLonelyLetters('ad') === 2 +countLonelyLetters('abc') === 0 +countLonelyLetters('Hello, World!') === 3 +countLonelyLetters('A-dA') === 1 +countLonelyLetters('zz') === 0 + +countLonelyLetters('') === 0 +countLonelyLetters('123 !!!') === 0 +countLonelyLetters('bdfhj') === 5 +countLonelyLetters('a') === 1 +countLonelyLetters('z') === 1 +countLonelyLetters('iiiaii`ii') === 1 +countLonelyLetters('iiiziii{iii') === 1 +countLonelyLetters('iiiAiii@ii') === 1 +countLonelyLetters('iiiZiii[iii') === 1 + +countLonelyLetters('Aa') === 0 +countLonelyLetters('B!d') === 2 +countLonelyLetters('C-c?e') === 1