#####solution1####faster####
def romanToInt(s):
d={
'I':1,
'V':5,
'X':10,
'L':50,
'C':100,
'D':500,
'M':1000
}
i = 1
count = last = d[s[0]]
while i < len(s):
current = d[s[i]]
if current > last:
count -= last * 2
count += current
last = current
i += 1
return count
# ########solution2########
# def romanToInt(s):
# d = {'I': 1,
# 'V': 5,
# 'X': 10,
# 'L': 50,
# 'C': 100,
# 'D': 500,
# 'M': 1000
# }
# res = 0
# if len(s) < 2:
# return d[s[0]]
# res = res + d[s[0]]
# for i in range(1,len(s)):
# res = res + d[s[i]]
# if d[s[i]] > d[s[i - 1]]:
# res = res - 2 * d[s[i-1]]
# return res
#
#
# if __name__=='__main__':
# m="MCMXCIV"
# print(romanToInt(m))

  

  分析:

current记录当前元素值,last记录前一个元素值,count记录current之前所有元素的和,也就是加上了last。

当current大于last时,count需要先减去last再加上current-last,即count-2*last+current

当current小于last时,count直接加上当前current即可,即count+current

013_RomanToInteger的更多相关文章

随机推荐

  1. menu

    <template> <el-row :gutter="10"> <div> <el-row :gutter="10" ...

  2. C# for循环或者foreach往List中添加对象的时候前面的数据总被最后加入的覆盖

    昨天我旁边小姐姐遇到一个问题,就是在执行for循环往list添加数据的时候,前面的数据信息总是被后面的数据信息所覆盖.  这样编写就会造成这样的数据效果:(所有的数据都会被覆盖)     问题原因:对 ...

  3. exgcd

    int exgcd(int a,int b,int &x,int &y){ if (b==0){ x=1,y=0; return a; } int d=exgcd(b,a%b,y,x) ...

  4. P1354 房间最短路问题

    传送门 可以发现,最短路一定要经过墙壁的断点. 那么把房间看作一个有向图,墙壁的断点为节点,求从起点到终点的最短路. 这道题的难点在于建图.枚举所有的断点,若可以走则加入这条边. 判断两点是否连通,即 ...

  5. Django缓存和内置信号

    缓存 简单概括就是将对数据库操作查询所得到的数据放入另外一台机器上(缓存)中,当用户再次请求时,直接去缓存中拿,避免对数据库的频繁操作,加快数据的显示时间,需要知道的是,缓存里面的数据一般都设置有超时 ...

  6. PS制作水火相溶特效文字图片

    最终效果 一.新建一个1400*900像素的画布. 二.由上到下拉一个深灰到纯黑径向渐变. 三.输入字母S,并用ctrl+t拉到适合的大小,并且降低不透明度. 四.拖入水花素材(如果大家有水花笔刷的话 ...

  7. C#中的虚函数及继承关系

    转载:http://blog.csdn.net/suncherrydream/article/details/8423991 若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法. 虚 ...

  8. vue通过自定义指令 v-py 将名字转拼音

    自定义指令 py: 1.新建 vue-py.js文件 import Vue from 'vue'; var chinesePointCode = { "a": [21834, 38 ...

  9. Zookeeper连接eclipse

    package com.bw.ZK; import java.io.IOException; import org.apache.zookeeper.CreateMode; import org.ap ...

  10. Shell命令-文件及目录操作之chattr、lsattr

    文件及目录操作 - chattr.lsattr 1. chattr:改变文件属性 chattr命令的功能说明 chattr命令用于改变文件属性.这项指令可改变存放在ext2文件系统上的文件或目录属性, ...