Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

134
Visualizações
elimine el carácter de 2 cadenas para convertirlos en anagrama en mecanografiado

Traté de resolver uno de los desafíos de Hackerrank String: Making Anagrams

Tengo 2 cadenas como esta:

 let a: string = "fcrxzwscanmligyxyvym" let b: string = "jxwtrhvujlmrpdoqbisbwhmgpmeoke"

¡y tengo una función que solo pasó 3 pruebas! :

 function makeAnagram(a: string, b: string): number { type Map = { [key :string] : number } let string1 = a.split('') let string2 = b.split('') let map : Map = {} let deletedCount = 0 let firstCount = 0 let isMoreThanTwo = false for(let i of string1) { map[i] = (map[i] | 0) + 1 } for(let i of string2){ map[i] = (map[i] | 0) + 1 } for(let i in map) { if(map[i] == 1) { deletedCount++ firstCount++ } else if(map[i] > 2) { isMoreThanTwo = true deletedCount += (map[i] - 1) } } return isMoreThanTwo ? deletedCount + firstCount : deletedCount

¿Hay alguna otra solución para contar los caracteres eliminados? y me pueden dar algun consejo, gracias

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Acabo de resolver este problema, pero antes de pasar todos los casos de prueba, llegué a una solución en la que usé

 for (let [k, v] of map) { remain += v; }

que falló 13/16 casos de prueba, luego depuré el programa y me di cuenta de que a veces, cuando restamos 1 del anterior de este paso, va less than 0 , por lo que también tengo que manejar este caso, lo manejo como

 for (let [k, v] of map) { remain += v < 0 ? v * -1 : v; }

Ahora, todos los casos de prueba se pasan

 function makeAnagram(a, b) { const [small, big] = a.length < b.length ? [a, b] : [b, a]; const map = new Map(); for (let c of small) { map.set(c, (map.get(c) ?? 0) + 1); } let remain = 0; for (let c of big) { !map.has(c) ? remain++ : map.set(c, map.get(c) - 1); } for (let [k, v] of map) { remain += v < 0 ? v * -1 : v; } return remain; } console.log(makeAnagram("fast", "sofasty"));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda