具体的题目稍微有点复杂,大家还是到网站上去看一下吧。
整数转罗马数字
罗马数字转整数
整数转罗马数字
只需要从前往后一点一点看就好了,也就是在字典中查找当前位数对应的罗马数字。比如2134,我们先找2000对应的罗马数字,100对应的罗马数字,30对应的罗马数字,4对应的罗马数字。
class Solution:
def intToRoman(self, num):
dict = {1: "I", 2: "II", 3: "III", 4: "IV", 5: "V", 6: "VI", 7: "VII", 8: "VIII", 9: "IX",
10: "X", 20: "XX", 30: "XXX", 40: "XL", 50: "L", 60: "LX", 70: "LXX", 80: "LXXX", 90: "XC",
100: "C", 200: "CC", 300: "CCC", 400: "CD", 500: "D", 600: "DC", 700: "DCC", 800: "DCCC", 900: "CM",
1000: "M", 2000: "MM", 3000: "MMM"}
num_str = str(num)
n = len(str(num))
i = 1
li = []
while i <= n:
tmp = int(num_str[i - 1]) * int("1" + "0" * (n - i))
if tmp == 0:
pass
else:
li.append(dict[tmp])
i = i + 1
ans = "".join(li)
return ans
罗马数字转整数
这道题目的关键在于,罗马字母如果可以两个两个一起看,那就不要一个一个看,最后在把得到的数相加就可以了。
class Solution:
def romanToInt(self, s: str) -> int:
dict = {"I":1,"IV":4,"V":5,"IX":9,"X":10,"XL":40,"L":50,"XC":90,"C":100,"CD":400,"D":500,"CM":900,"M":1000}
num = []
while s != "":
if s[:2] in dict:
num.append(dict[s[:2]])
s = s[2:]
else:
num.append(dict[s[0]])
s = s[1:]
#print(num)
return sum(num)