Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 69x 69x 55x 69x 14x 14x 14x 69x 5x 5x 1x 1x | const mapper = {
1000: "M",
900: "CM",
500: "D",
400: "CD",
100: "C",
90: "XC",
50: "L",
40: "XL",
10: "X",
9: "IX",
5: "V",
4: "IV",
1: "I"
};
var romanToInt = function(s: number) {
let searchNumber = s;
let result = "";
let currentIndex = 0;
// sort numbers DESC, [1000, 900, ..., 1]
const numbers = Object.keys(mapper).map((i) => +i).sort((a, b) => b - a);
while(searchNumber > 0) {
const currentNumber = numbers[currentIndex];
if(currentNumber > searchNumber) {
currentIndex++;
} else {
searchNumber = searchNumber - currentNumber;
result += mapper[currentNumber as keyof typeof mapper];
}
}
return result;
};
export default romanToInt;
|