Skip to content

Commit 0a0159e

Browse files
committed
roman to number
1 parent 6461379 commit 0a0159e

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

numberToRoman-2.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
let roman = {
2+
"I":1,
3+
"V":5,
4+
"X":10,
5+
"L":50,
6+
"C":100,
7+
"D":500,
8+
"M":1000,
9+
}
10+
11+
12+
/**
13+
* @param {string} s
14+
* @return {number}
15+
*/
16+
var romanToInt = function(s) {
17+
let arr = s.split(""), prev = Number.MAX_SAFE_INTEGER
18+
19+
return arr.reduce((acc, i) => {
20+
let value = roman[i]
21+
if (value > prev)
22+
{
23+
acc+= (value - prev ) - prev
24+
} else {
25+
acc+= roman[i]
26+
}
27+
prev = value
28+
return acc
29+
}, 0)
30+
};

romanToNumber.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
var romanToInt = function(s) {
6+
let key = {"I": 1,
7+
"V": 5,
8+
"X": 10,
9+
"L": 50,
10+
"C": 100,
11+
"D": 500,
12+
"M": 1000
13+
}, sum = 0, last;
14+
15+
s.split("").forEach((num) => {
16+
if (last && key[last] < key[num]){
17+
sum -= key[last]
18+
sum += key[num] - key[last]
19+
} else {
20+
sum += key[num]
21+
}
22+
last = num
23+
});
24+
25+
return sum
26+
27+
};

0 commit comments

Comments
 (0)