发布日期:2024-04-20 05:13 点击次数:99
1、编程试题:
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
举例, 罗马数字 2 写稿念 II ,即为两个并排的 1。12 写稿念 XII ,即为 X + II 。 27 写稿念 XXVII, 即为 XX + V + II 。
陆续情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,举例 4 不写稿念 IIII,而是 IV。数字 1 在数字 5 的左边,所示意的数就是大数 5 减极少 1 得到的数值 4 。相同地,数字 9 示意为 IX。这个零碎的规矩只适用于以下六种情况:
I 不错放在 V (5) 和 X (10) 的左边,来示意 4 和 9。
X 不错放在 L (50) 和 C (100) 的左边,来示意 40 和 90。
C 不错放在 D (500) 和 M (1000) 的左边,来示意 400 和 900。
给你一个整数,将其转为罗马数字。
示例 1:
输入: num = 3
输出: "III"
示例 2:
输入: num = 4
输出: "IV"
示例 3:
输入: num = 9
输出: "IX"
示例 4:
输入: num = 58
输出: "LVIII"
评释: L = 50, V = 5, III = 3.
2、代码结束:
可剪辑代码如下:
#!/usr/bin/python3.9
# -*- coding: utf-8 -*-
#
# Copyright (C) 2024 , Inc. All Rights Reserved
#
# @Time : 2024/3/3 10:29
# @Author : fangel
# @FileName : [leetcode] 12. 整数转罗马数字.py
# @Software : PyCharm
class Solution:
def intToRoman(self, num: int) -> str:
# 要津1:先将罗马数字里的常见字符和对应的数字按照从大到小进行排序
valueList = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
keyList = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"];
resList = ""
# 要津2:针对给定的数字,循序从valueList表格里进行减法运算
for i in range(0, len(valueList)):
# 当该数值大于valueList中的元素时,一直减valueList中的元素,直到投入下一个位数
while num >= valueList[i]:
num = num - valueList[i]
resList += str(keyList[i])
return resList
# 得到输入, 类型为字符串
input = int(input())
# 调用函数
print(Solution().intToRoman(input))
3、代码分析:
先将罗马数字里的常见字符和对应的数字按照从大到小进行排序,然后针对给定的数字,循序从valueList表格里进行减法运算
ps:罗马时期数字大小有限,合计千就如故很大了,当扩充99999时后果就有点惊吓了
99999
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCMXCIX
4、启动后果:
输入:87
输出:LXXXVII