博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode❤python】13. Roman to Integer
阅读量:5332 次
发布时间:2019-06-15

本文共 807 字,大约阅读时间需要 2 分钟。

#-*- coding: UTF-8 -*-

#从前向后遍历罗马数字,
#如果某个数比前一个数小,则加上该数。反之,减去前一个数的两倍然后加上该数
###-----技术规则-----
#-------------------------------------------------------------------------------------
##1、相同的数字连写,所表示的数等于这些数字相加得到的数,例如:III = 3
##2、小的数字在大的数字右边,所表示的数等于这些数字相加得到的数,例如:VIII = 8
##3、小的数字,限于(I、X和C)在大的数字左边,所表示的数等于大数减去小数所得的数,例如:IV = 4
##4、正常使用时,连续的数字重复不得超过三次
##5、在一个数的上面画横线,表示这个数扩大1000倍(本题只考虑3999以内的数,所以用不到这条规则)
class Solution(object):
    romandic={'I':1,
              'V':5,
              'X':10,
              'L':50,
              'C':100,
              'D':500,
              'M':1000}
    def romanToInt(self, s):
    
        intsum=0
    
        size=len(s)
        i=0
        while i<size:
            if(i>0 and self.romandic[s[i-1]]<self.romandic[s[i]]):
                intsum+=self.romandic[s[i]]-2*self.romandic[s[i-1]]
            else:intsum+=self.romandic[s[i]]
            i+=1
        return intsum
sol=Solution()
print sol.romanToInt('IV')

转载于:https://www.cnblogs.com/kwangeline/p/5953510.html

你可能感兴趣的文章
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
对闭包的理解
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
windows编程ASCII问题
查看>>
.net webService代理类
查看>>
Code Snippet
查看>>
Node.js Express项目搭建
查看>>
zoj 1232 Adventure of Super Mario
查看>>
1201 网页基础--JavaScript(DOM)
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
oracle job
查看>>
Redis常用命令
查看>>
XML学习笔记(二)-- DTD格式规范
查看>>
IOS开发学习笔记026-UITableView的使用
查看>>
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>