首页 > 解决方案 > 在 Java Script 中将 Roman 转换为 Integer

问题描述

我目前正在学习 LeetCode 中的数据结构和算法。我试图自己解决“罗马到整数”。我试图创建一个对象,并通过使用 for ...in 来访问键和键的值。所以,我想通过使用 console.log 检查我的密钥和密钥的值,但它没有显示任何内容。你能检查一下我错过了哪一部分吗?如果我问了一个愚蠢的问题,我很抱歉。我试图自己解决这个问题,但我找不到几个小时犯错的地方......如果还有其他错误,请告诉我!

这是我到目前为止所做的代码

function romanToNum(s) {
  const roman = {
    I :1,
    IV:4,
    V :5,
    IV:9,
    X :10,
    // IL: 49,
    L :50,
    // IC:99,
    C :100,
    // ID:499,
    D :500,
    // IM:999,
    M :1000
  };
  
  let answer = '';
  
  for(let key in roman){
    console.log(key);
    console.log(roman[key]);
    while (s >= roman[key]) {
      answer += key;
      s -= roman[key];
    }
  }
}

标签: javascript

解决方案


您什么都看不到,因为无论何时您处于 for 循环块中时,该对象都是未知的。为了初始化对象并在函数的本地范围之外看到它romanToNum,您可以做以下事情。

  1. 您可以全局初始化对象,而不将其封闭在函数的本地范围内;基本上摆脱 romanToNum 因为它无论如何都没有做任何事情。

  2. 从函数返回对象并将其捕获到全局变量中。

function getObject() {
  return roman = {
    I :1,
    IV:4,
    V :5,
    IV:9,
    X :10,
    // IL: 49,
    L :50,
    // IC:99,
    C :100,
    // ID:499,
    D :500,
    // IM:999,
    M :1000
  };

let roman = getObject();

我不确定你为什么选择这样做,但在我看来,它似乎不是最喜欢的。


推荐阅读