1
resposta

Verificação de Anagrama

Olá pessoal, estou fazendo um desafio de verificação de duas palavras para comparar se são anagramas, a princípio está funcionando mas alguém pode me dar um feedback?

Agradeço!

let palavraUm = 'socorram'.toLowerCase().split('')
let palavraDois = 'marrocos'.toLowerCase().split('')

function verificaAnagramas (){
 let tamanho = false
 let contador = 0;
  if(palavraDois.length == palavraUm.length){
    tamanho = true
    for(let i = 0; i < palavraUm.length; i++){
      if(palavraDois.includes(palavraUm[i])){
        contador++
      }
    }
  }
  if(tamanho === true && contador === palavraDois.length){
    console.log(`${palavraUm.join('')} e ${palavraDois.join('')} são anagramas`)
  }else{
    console.log(`${palavraUm.join('')} e ${palavraDois.join('')} não são anagramas`)
  }
}

verificaAnagramas()

1 resposta

Olá João, tudo bem?

Que legal que você está se aventurando no desafio de verificar anagramas. O seu código está no caminho certo, mas há algumas melhorias que podem ser feitas para garantir que a verificação de anagramas seja mais precisa.

No seu código atual, você está verificando se cada letra de palavraUm está presente em palavraDois, mas isso não garante que a quantidade de cada letra seja a mesma em ambas as palavras. Por exemplo, as palavras "amor" e "roma" são anagramas, mas "amor" e "roam" não são, mesmo que todas as letras de uma estejam na outra.

Uma abordagem comum para verificar anagramas é ordenar as letras de cada palavra e compará-las. Se as palavras ordenadas forem iguais, então elas são anagramas. Você poderia fazer isso:

function verificaAnagramas(palavraUm, palavraDois) {
  const palavraUmOrdenada = palavraUm.toLowerCase().split('').sort().join('');
  const palavraDoisOrdenada = palavraDois.toLowerCase().split('').sort().join('');

  if (palavraUmOrdenada === palavraDoisOrdenada) {
    console.log(`${palavraUm} e ${palavraDois} são anagramas`);
  } else {
    console.log(`${palavraUm} e ${palavraDois} não são anagramas`);
  }
}

verificaAnagramas('socorram', 'marrocos');

Dessa forma, você garante que está comparando as mesmas letras na mesma quantidade. Espero que isso ajude a melhorar seu código!

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!