整数转罗马数字(中等)(leetcode12)
罗马数字包含7种字符:I,V,X,L,C,D,M给一个整数,转为罗马数字。输入在1到3999范围内。
字符 数值
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 。通常情况下,罗马数字中小的数字在大的数字的右边。
六种特例:
(1)IV:4 (2)IX:9 (3)XL:40 (4)XC:90 (5)CD:400 (6)CM:900
示例 1: 输入: 3 输出: "III"
示例 2: 输入: 4 输出: "IV"
示例 3: 输入: 9 输出: "IX"
示例 4: 输入: 58 输出: "LVIII"
示例 5: 输入: 1994 输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.
def intToRoman(self, num):
dic={'M':1000,'CM':900,'D':500,'CD':400,'C':100,'XC':90,'L':50,'XL':40,'X':10,'IX':9,'V':5,'IV':4,'I':1}
roman=''
for i,n in sorted(dic.items(),key=lambda t:t[1])[::-1]:
while num>=n:
roman+=i
num-=n
return roman
罗马数字转整数(简单)(leetcode13)
示例 1: 输入: "III" 输出: 3
示例 2: 输入: "IV" 输出: 4
示例 3: 输入: "IX" 输出: 9
示例 4: 输入: "LVIII" 输出: 58
解释: L = 50, V= 5, III = 3.
示例 5: 输入: "MCMXCIV" 输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
def romanToInt(self, s):
a={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
ans=0
for i in range(len(s)):
if i<len(s)-1 and a[s[i]]<a[s[i+1]]:
ans-=a[s[i]]
else:
ans+=a[s[i]]
return ans