Leetcode #13 罗马转整数 Javascript
Leetcode #13 Roman to Integer Javascript
我目前正在尝试解决 Leetcode 上的“Roman to Integer”问题。
我的代码使用罗马数字,例如(“III (3)”、“V (5)”、“X (10)”、“C (50)”)作为一些示例。我的代码崩溃的地方是罗马数字,例如 ("IV (4)", "IX (9)", "XL (40)").
let romanNum = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000}
let specCases = {"IV":4, "IX":9, "XL":40, "XC":90, "CD":400, "CM":900}
arr.reduce((acc,cur,i) => {
//check if it is one of the special cases
let lastTwo = ""
if (i !== 0) {
let lastTwo = arr[i-1].concat(cur)
console.log(lastTwo)
console.log(Object.keys(specCases))
console.log(typeof(lastTwo))
}
if (lastTwo in specCases) {
acc = acc - romanNum[arr[i-1]] + specCases[lastTwo]
return console.log(acc)
}
//for non-sepcial cases run the code below
acc = acc + romanNum[cur]
return acc
}, 0)
我还在上面包含了相关的代码片段。我检查以确保正确分配了“lastTwo”变量,正确访问了 specCases 对象键,并且 typeof(lastTwo) 是一个字符串。我上面检查的所有内容似乎都是正确的。
下面是link使用“IX”时leetcode输出的照片:
当运行代码时,第二个条件语句不满足,那部分代码不是运行.
为什么第二个条件不满足?
巴尔马尔回答了这个问题:
将 let lastTwo = arr[i-1].concat(cur) 更改为 lastTwo = arr[i-1].concat(cur)。您正在 if 的范围内创建一个新变量,而不是分配外部变量。
我目前正在尝试解决 Leetcode 上的“Roman to Integer”问题。
我的代码使用罗马数字,例如(“III (3)”、“V (5)”、“X (10)”、“C (50)”)作为一些示例。我的代码崩溃的地方是罗马数字,例如 ("IV (4)", "IX (9)", "XL (40)").
let romanNum = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000}
let specCases = {"IV":4, "IX":9, "XL":40, "XC":90, "CD":400, "CM":900}
arr.reduce((acc,cur,i) => {
//check if it is one of the special cases
let lastTwo = ""
if (i !== 0) {
let lastTwo = arr[i-1].concat(cur)
console.log(lastTwo)
console.log(Object.keys(specCases))
console.log(typeof(lastTwo))
}
if (lastTwo in specCases) {
acc = acc - romanNum[arr[i-1]] + specCases[lastTwo]
return console.log(acc)
}
//for non-sepcial cases run the code below
acc = acc + romanNum[cur]
return acc
}, 0)
我还在上面包含了相关的代码片段。我检查以确保正确分配了“lastTwo”变量,正确访问了 specCases 对象键,并且 typeof(lastTwo) 是一个字符串。我上面检查的所有内容似乎都是正确的。
下面是link使用“IX”时leetcode输出的照片:
当运行代码时,第二个条件语句不满足,那部分代码不是运行.
为什么第二个条件不满足?
巴尔马尔回答了这个问题:
将 let lastTwo = arr[i-1].concat(cur) 更改为 lastTwo = arr[i-1].concat(cur)。您正在 if 的范围内创建一个新变量,而不是分配外部变量。