Skip to content

Latest commit

 

History

History
43 lines (32 loc) · 1.23 KB

duplicate-encoder.md

File metadata and controls

43 lines (32 loc) · 1.23 KB

Duplicate Encoder 6 Kyu

LINK TO THE KATA - STRINGS ARRAYS FUNDAMENTALS

Description

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.

Examples

"din"      =>  "((("
"recede"   =>  "()()()"
"Success"  =>  ")())())"
"(( @"     =>  "))(("

Notes

Assertion messages may be unclear about what they display in some languages. If you read "...It Should encode XXX", the "XXX" is the expected result, not the input!

Solution

const isUniqueCharacter = (word, character) => {
  return word.indexOf(character) === word.lastIndexOf(character)
}

const duplicateEncode = word => {
  const lowerCaseWord = word.toLowerCase()

  return lowerCaseWord
    .split('')
    .map(character => {
      return isUniqueCharacter(lowerCaseWord, character) ? '(' : ')'
    })
    .join('')
}