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

110
Views
porque in no resta pero for sí

Estaba en leetcode y encontré un problema if quería resolver usando for in lugar de convertir un número romano en un número natural:

 let s = "IV" let res = 0 let dic = { M: 1000, D: 500, C: 100, L: 50, X: 10, V: 5, I: 1 }

después de configurar las variables básicas, hice el código real:

 for (let i in s) { if (dic[s[i]] < dic[s[i + 1]]) { res -= dic[s[i]]; } else { res += dic[s[i]]; } }

haciendo esto, el resultado es 6 en lugar de 4, lo cual me sorprende, si tomamos i = 0 , tenemos que if (1 < 5) {res -= 1} entonces cuando i = 1 sumará 5 a -1, entonces el resultado debería ser 4.

después de intentarlo, encontré una manera que lo hizo exactamente como lo hice pero usando for (let i = 0; i < s.length; i++) y funcionó.

Mi pregunta es ¿por qué funciona con otro tipo de for ? ¿Hay alguna manera de hacerlo con for in ya que es más legible?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

i es una cadena. Así que usa parseInt así:

 let s = "IV" let res = 0 let dic = { M: 1000, D: 500, C: 100, L: 50, X: 10, V: 5, I: 1 } for (let i in s.split("")) { if (dic[s[i]] < (dic[s[parseInt(i)+1]])) { res -= dic[s[i]]; } else { res += dic[s[i]]; } } console.log("res",res);

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!