羅馬數(shù)字轉(zhuǎn)為整數(shù)

只要明白了羅馬數(shù)字的基本道理,把羅馬數(shù)字轉(zhuǎn)為整數(shù)其實(shí)很簡單,

羅馬數(shù)字有I V X L C D M 組成,分別代表1,5, 10, 50,100,500,1000

然后這幾個(gè)字母在一塊組成一個(gè)數(shù).字母組合的規(guī)則有兩個(gè):

- 1.假如左邊的字母代表的數(shù)比右邊的字母代表的數(shù)小,那么這個(gè)字母代表的數(shù)為本來的相反數(shù).

如IV為-1 + 5 = 4

- 2.其他情況都為本來的數(shù)

如VI為5 + 1 = 6

- 3.最后一位為正的.

其實(shí)還有挺多細(xì)節(jié)的,但是這個(gè)題目需要的只有這些,了解這些就足夠了.

然后按照上面的兩條邏輯,就可寫出下面的代碼.

除了這個(gè)題目的解法之外,還有要注意寫法,如果變量為不變的,那就定義為const,假如只在此作用域起作用,就定義為let,經(jīng)過我自己的實(shí)踐,用這兩種代替var,可以提高程序的運(yùn)行速度,所以,我們從開始就要養(yǎng)成良好的編程習(xí)慣.

## Solution(javascript):

這種解法不是最優(yōu)的,但應(yīng)該是比較簡單直觀.所以今天發(fā)這種解法.后面可能更新別的解法

```

var romanToInt = function(s) {

const arr = s.split('');

const map = {

I: 1,

V: 5,

X: 10,

L: 50,

C: 100,

D: 500,

M: 1000,

}

let len = arr.length;

let num = map[arr[len-1]];

for(let i = len-2; i >=0; i--) {

let addNum = map[arr[i]];

if (addNum >= map[arr[i+1]])

num += addNum;

else

num -= addNum;

}

return num;

};

```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容