Leetcode 12. 整数转罗马数字 TypeScript 题解

在这里插入图片描述

解析:

  • 两种方式, 使用 hashmap表, 或者用二个数组对应, 首先,考虑一些特殊情况, 然后考虑正常的情况,
  • 比如 51, 51大于50, 一旦大于较大的数值, 就减去它, 剩1,然后加上1, 就可以了。
  • 比如 4, 9, 等特殊情况, 直接判断,出局
  • 或者使用暴力解法, 因为题目限制最大不超过3999

代码:

function intToRoman(num: number): string {
  let map = new Map<number, string>()
  // 特殊情况
  map.set(1000, 'M')
  map.set(900, 'CM')
  map.set(500, 'D')
  map.set(400, 'CD')
  map.set(100, 'C')
  map.set(90, 'XC')
  map.set(50, 'L')
  map.set(40, 'XL')
  map.set(10, 'X')
  map.set(9, 'IX')
  map.set(5, 'V')
  map.set(4, 'IV')
  map.set(1, 'I')

  if (map.has(num)) {
    return map.get(num)
  }

  let res: string = ""
  for(let i of map){
    while(num >= i[0]){
      res += i[1]
      num-= i[0]
    }
  }
  return res
};
```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值