我知道有一些不同的方法来罗马化一个数字,但是我正在努力弥补自己,并且想知道这种方法是否可行。
它为每次迭代返回Null,我似乎无法看到我在这里缺少的东西。任何帮助将不胜感激!
var array;
var result = [];
function convertToRoman(num) {
array = num.toString().split('').reverse();
roman = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX",
"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC",
"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"
];
for (i = 0, j = 0; i < array.length; i++, j += 10) {
var location = array[i] + j;
result = result.concat(roman[location]);
}
return result.reverse().join();
}
console.log(convertToRoman(123));
答案 0 :(得分:2)
由于array
包含字符串,因此在算术中使用它们时必须将它们解析回整数。这是一个可能的解决方案:
var roman = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX",
"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC",
"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"
];
function convertToRoman(num) {
var result = [];
var array = num.toString().split('').reverse();
for (i = 0, j = 0; i < array.length; i++, j += 10) {
var location = parseInt(array[i]) + j;
result.push(roman[location]);
}
return result.reverse().join('');
}
console.log(convertToRoman(123));
&#13;
请注意,我对array.push()
的变量范围和使用做了一些更改。我也没有尝试过多次输入的方法。但是让算法正确不是你问题的一部分