我的功能看起来是这样的:罗马来诠释正确转换在某些情况下
let romanToInt = romanNumber => {
if(typeof romanNumber !== 'string') throw new TypeError('Argument must be of type String');
const values = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000 };
let sum = 0;
romanNumber.split('').map(n => n.toUpperCase()).forEach(n => sum = (sum >= values[n]) ? sum + values[n] : values[n] - sum);
return sum;
}
console.log(romanToInt("MCMXCVI"));
大部分我是正确的测试输入,但例如罗马数字MCMXCVI
,应该给我1996
,而不是2216
,这正是我所得到的。
我发现了这一点,但我不能确定如何实现:
你必须分开的,几十,几百,数千作为单独 项目。这意味着99是XCIX,90 + 9,但从不应该写为 作为IC。同样,999不能是IM,而1999不能是MIM。
*“这可能与它有关”* - 是的。 CM是900,IX是9,IV是4等等。你的代码根本不允许。 – nnnnnn
@nnnnnn我的文字选择不当。我会编辑,但我仍然不确定如何实现它。 –
@尼古拉斯哈密尔顿错了。用IX试试我的代码。它将打印9. –