我的功能看起來是這樣的:羅馬來詮釋正確轉換在某些情況下
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. –