Leetcode-Easy-13 Palindrome to integer(python)

题目
image.png
思路

给出一串罗马数字,需要转换成阿拉伯数字,其中4,9,40,90,400,900的表达方式会特殊。
解决办法:只需要将罗马字符放入一个列表,从左到右(罗马数字左大右小)读取,遇到左小右大的情况,可以判定为上述特殊情况,做减法即可。
因为只需要读取一遍列表与构建的字典{罗马字符:阿拉伯数字}做匹配,所以,
时间复杂度:O(n)

代码实现
class Solution:
    def romanToInt(self,rnum):
        rnum = input("input:")
        dic = {"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000}
        rnum = list(rnum)
        s =0
        if len(rnum) <1 or len(rnum)> 15:
            return 0
        for i in range(len(rnum)-1):
            if dic[rnum[i]] < dic[rnum[i + 1]]:
                s = s - dic[rnum[i]]
            else:
                s = s + dic[rnum[i]]
        s = s + dic[rnum[i+1]]
        return s
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容