From aeb641e339179c0932916e4c917b6e6c6c243237 Mon Sep 17 00:00:00 2001 From: Vasily Guzov Date: Thu, 3 Oct 2024 13:15:35 +0300 Subject: [PATCH] [6kyu][fundamentals][strings][array] https://www.codewars.com/kata/54b42f9314d9229fd6000d9c/solutions/typescript The goal of this exercise is to convert a string to a new string where each character in the new string is "(" if that character appears only once in the original string, or ")" if that character appears more than once in the original string. Ignore capitalization when determining if a character is a duplicate. --- lib/duplicateEncodedr.ts | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib/duplicateEncodedr.ts diff --git a/lib/duplicateEncodedr.ts b/lib/duplicateEncodedr.ts new file mode 100644 index 0000000..37e3557 --- /dev/null +++ b/lib/duplicateEncodedr.ts @@ -0,0 +1,44 @@ +export function duplicateEncode(word: string) { + let res = ""; + let i = 0; + + while (i < word.length) { + const char = word[i]; + + const firstIndex = word.indexOf(char) + const lastIndex = word.lastIndexOf(char) + + if (firstIndex !== lastIndex) { + res += ")" + } else { + res += "(" + } + + i++ + } + + return res; +} + +export function duplicateEncode1(word: string) { + return word + .toLowerCase() + .split('') + .map((a, _, w) => { + return w.indexOf(a) == w.lastIndexOf(a) ? '(' : ')' + }) + .join('') +} + +console.log( + duplicateEncode("din"), "(((" +) +console.log( + duplicateEncode("recede"), "()()()" +) +console.log( + duplicateEncode("Success"), ")())())" +) +console.log( + duplicateEncode("(( @"), "))((" +)