12. Integer to Roman
分析
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| I | II | III | IV | V | VI | VII | VIII | IX |
| 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 |
| X | XX | XXX | XL | L | LX | LXX | LXXX | XL |
| 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 |
| C | CC | CCC | CD | D | DC | DCC | DCCC | CM |
| 1000 | 2000 | 3000 | ||||||
| M | MM | MMM |
1234 转换成罗马数字是 MCCXXXIV,也就是从千位到个位依次拼接,用代码将过程模拟出来即可
- 分解数值:
- 定义一个从大到小排列的数值数组
values,以及对应的罗马数字字符串数组romans - 数值包括基本符号(如
1000,500)及特殊减法组合(如900,400)
- 定义一个从大到小排列的数值数组
- 逐步转换:
- 遍历数值数组
values,对于每个值,检查当前数字num是否大于等于该值 - 若是,则从
num中减去该值,同时将对应的罗马数字添加到结果字符串中 - 重复上述步骤,直到
num为0
- 遍历数值数组
- 输出结果:
- 返回拼接的罗马数字字符串
时间复杂度
常数时间复杂度 O(1)
空间复杂度
常数空间复杂度 O(1)
C++代码
|
|