题目

https://leetcode-cn.com/problems/roman-to-integer/

方法

  1. /**
  2. * @param {string} s
  3. * @return {number}
  4. */
  5. var romanToInt = function (s) {
  6. //先使用map结构存储
  7. let map = {
  8. I: 1,
  9. V: 5,
  10. X: 10,
  11. L: 50,
  12. C: 100,
  13. D: 500,
  14. M: 1000,
  15. }
  16. //罗马数分割成数组
  17. let sArr = s.split('')
  18. //总数
  19. let sum = 0
  20. for (let i = 0; i < sArr.length; i++) {
  21. //sArr[i]拿到的是key,只要比较前一个比后一个小就行,小的话相减,并且这个时候,i+1已经不用计 算了(已经减掉了),我们可以把i+1,跳过下一个数字的比对操作
  22. let value = map[sArr[i]]
  23. if (value < map[sArr[i + 1]]) {
  24. value = map[sArr[i + 1]] - value
  25. i++
  26. }
  27. sum += value
  28. }
  29. return sum
  30. };