Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Implementação de deque aqui

Exemplo de uso

Palíndromo

O seguinte algoritmo usa uma deque para resolver se uma string é um palíndromo:

function palindromeChecker(aString) {
  if (!aString) return false;
  const deque = new Deque();
  const lowerStr = sString.toLowerCase().split(' ').join('');
  let isEqual = true;
  let firstChar, lastChar;

  for (let i = 0; i < lowerStr.length; i++) {
    deque.addBack(lowerStr[i]);
  }

  while (deque.size() > 1 && isEqual) {
    firstChar = deque.removeFront();
    lastChar = deque.removeBack();
    if (firstChar !== lastChar) isEqual = false;
    return isEqual;
  }
}
  1. Se a string passada como argumento é inválida (undefined, null, ou vazia), a função retorna imediatamente false.

  2. Criamos uma deque;

  3. Removemos espaços vazios e deixamos todas as letras em caixa baixa;

  4. Enfileiramos todos os caracteres da string na deque;

  5. Enquanto há elementos na deque, removemos da deque o primeiro e o último elemento, comparamos um com o outro e caso sejam iguais o processo se repete, caso contrário a string não é palíndroma, o loop while é terminado e a função retorna false. Caso a string seja um palíndromo, a variável isEqual permanece true e é retornada pela função.

Exemplo:

console.log(palindromeChecker('a')); // true
console.log(palindromeChecker('aa')); // true
console.log(palindromeChecker('kayak')); // true
console.log(palindromeChecker('level')); // true
console.log(palindromeChecker('Was it a car or a cat I saw')); // true
console.log(palindromeChecker('Step on no pets')); // true