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++代码
|
|