leetcode刷题(罗马数字转数字)

1.题目描述
leetcode刷题(罗马数字转数字)_第1张图片
2.解题思路
这时候已经给出了字母对应的数字,我们只需要声明一个字典,将罗马数字和数字之间的对应关系声明即可。其中可能涉及到会出现两个连续的罗马字母代表一个数字,这时候我们需要判断遍历的字符和将要遍历的下一个字符是否存在于字典的key中,注意下一个字符的下标不要超过字母的range。
3.代码实现

class Solution:
    def romanToInt(self, s: str) -> int:
        length=len(s)
        dictnum={"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000,"IV":4,"IX":9,"XL":40,"XC":90,"CD":400,"CM":900}
        all_keys = list(dictnum.keys())
        num=0
        count=0
        for i in range(0,length):
            i=i+count
            if i>=length:
                break

            if i+1==length:
                num=num+dictnum[s[i]]
            else:
                if s[i]+s[i+1] not in all_keys:
                    num=num+dictnum[s[i]]
                else:
                    num=num+dictnum[s[i]+s[i+1]]
                    count=count+1
        return num
                    

你可能感兴趣的:(leetcode,算法,python)