Skip to content

Commit

Permalink
12. Integer to Roman
Browse files Browse the repository at this point in the history
  • Loading branch information
universeroc committed Sep 14, 2021
1 parent 150ff81 commit e015f4a
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions 12. Integer to Roman/solution.js
@@ -0,0 +1,70 @@
/**
* @param {number} num
* @return {string}
*/
var intToRoman = function(num) {
const m = {
'1': 'I',

'2': 'II',
'3': 'III',

'5': 'V',

'6': 'VI',
'7': 'VII',
'8': 'VIII',

'10': 'X',
'50': 'L',

'60': 'LX',
'70': 'LXX',
'80': 'LXXX',

'100': 'C',
'500': 'D',

'600': 'DC',
'700': 'DCC',
'800': 'DCCC',


'1000': 'M',
// six instances
'4': 'IV',
'9': 'IX',
'40': 'XL',
'90': 'XC',
'400': 'CD',
'900': 'CM'
}

if (num > 0 && num < 11)
return m[num.toString()]

const i = m[num.toString()]
if (i)
return i
else {
let pow10 = 1000
let o = ''
while (num) {
let n = Math.floor(num / pow10)
if (n) {
let r = m[(pow10*n).toString()]
if (r) {
o += r
} else {
r = m[(pow10).toString()]
for (let i = 0; i < n; ++i) {
o += r
}
}
}
num %= pow10
pow10 /= 10
}
return o
}
};

0 comments on commit e015f4a

Please sign in to comment.