Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

133
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!