Palindrome Permutation

Dado uma string, escreva uma função para checar se a string é uma permutation de um palíndromo.

Um palíndromo é uma palavra ou frase ou sentença que permanece igual quando lida de trás para frente.

A permutação é um rearranjo das letras.

O palíndromo não precisa ser limitado a apenas palavras do dicionário. Exemplo:

Dicas

Solução

      
function isMod (input) {
  return input % 2 === 0
}

function incremet (input) {
  return input + 1
}

function isEmpty (input) {
  return input === ' '
}

function assoc (map, key) {
  map[key] = 1
}

function updateOddQuantity (input, oddQuantity) {
  if (isMod(input)) {
    return oddQuantity - 1
  }

  return oddQuantity + 1
}

function palindrome (input) {
  let characterHashMap = {}
  let oddQuantity = 0;

  for (let i = 0; i < input.length; i++) {
    const character = input[i].toLowerCase()

    if (isEmpty(character)) {
      continue
    }

    if (characterHashMap[character]) {
      characterHashMap[character] = incremet(characterHashMap[character])
      oddQuantity = updateOddQuantity(characterHashMap[character], oddQuantity)
      continue
    }

    assoc(characterHashMap, character)
    oddQuantity = incremet(oddQuantity)
  }

  return oddQuantity < 2
}