文章目录
Problem: 13. 罗马数字转整数
思路
观察发现,罗马数字小的在大的左边为减,小的在右边为加。最后一个永远为加
解题方法
通过与后一个字母判断是加还是减,最后加上最后一个数字。
Code
class Solution:
def romanToInt(self, s: str) -> int:
dictr = {
"I" :1,
"V" :5,
"X" :10,
"L" :50,
"C" :100,
"D" :500,
"M" :1000
}
length = len(s)
num= 0
for i in range(length - 1):
if dictr[s[i]] < dictr[s[i+1]]:
num -=dictr[s[i]]
else:
num +=dictr[s[i]]
return num+dictr[s[-1]]
Problem: 12. 整数转罗马数字
思路
按照转换逻辑从大到小逐个将数字转成罗马数字。
Code
class Solution:
def intToRoman(self, num: int) -> str:
string = ""
while num > 0 :
if num >=1000:
num-=1000
string+="M"
elif num >=900:
num-=900
string+="CM"
elif num >=500:
num-=500
string+="D"
elif num >=400:
num -=400
string+="CD"
elif num >=100:
num -=100
string+="C"
elif num >=90:
num -=90
string+="XC"
elif num >=50:
num-=50
string+="L"
elif num >=40:
num-=40
string+="XL"
elif num >=10:
num-=10
string+="X"
elif num >=9:
num-=9
string+="IX"
elif num >=5:
num-=5
string+="V"
elif num >=4:
num-=4
string+="IV"
else:
num-=1
string+="I"
return string