完整代码及注释:
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
//这里把罗马数字转化成汉字形式使用字典的键值对模式
a = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
//ans参数存储转化的结果
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
例如:输入的是‘IV’罗马数字4:
第一次循环得到的结果是:0-1=-1
第二次循环得到的结果是:-1+5=4,得到结果
几个小知识点
字典的使用:
字典使用的是键值对形式:
1.字典中键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
2.键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
这种写法会出错
dict = {['Name']: 'liumh', 'Age': 18}
3.报错的一次这行代码是这样写的a = {'I':'1', 'V':'5', 'X':'10', 'L':'50', 'C':'100', 'D':'500', 'M':'1000'}
在判断ans-=a[s[i]]
这句代码时就会报字符串和整型不可以做运算,原因就是键给设置成了字符串类型,而我们需要的是整数类型,这时把每个键的值改为整型就可以了