All files / leetCode 0012.ts

100% Statements 9/9
100% Branches 2/2
100% Functions 1/1
100% Lines 9/9

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  18x                             18x 18x   18x 234x 37x 37x 37x       18x    
export default function intToRoman(num: number): string {
  const map = new Map<number, string>([
    [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'],
  ])
  let roman = ''
  let left = num
 
  for (const [num, str] of map.entries()) {
    if (left >= num) {
      const times = Math.floor(left / num)
      roman += str.repeat(times)
      left -= num * times
    }
  }
 
  return roman
}