013_RomanToInteger


#####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的更多相关文章
随机推荐
- 【Linux基础】查看硬件信息-硬盘
一.基础知识 1.磁盘分区 磁盘的分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个.且基本分区可以 ...
- Redis学习笔记(5)——Redis数据持久化
出处http://www.cnblogs.com/xiaoxi/p/7065328.html 一.概述 Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存 ...
- Java中的CAS原理
前言:在对AQS框架进行分析的过程中发现了很多CAS操作,因此有必要对CAS进行一个梳理,也便更清楚的了解其原理. 1.CAS是什么 CAS,是compare and swap的缩写,中文含义:比较交 ...
- Loj #3059. 「HNOI2019」序列
Loj #3059. 「HNOI2019」序列 给定一个长度为 \(n\) 的序列 \(A_1, \ldots , A_n\),以及 \(m\) 个操作,每个操作将一个 \(A_i\) 修改为 \(k ...
- 【转】Android辅助功能AccessibilityService自动全选择文字粘贴模拟输入
网上找了很久AccessibilityService全选文字的方法,一直没找到,自己研究了半天,分享出来. /** * 输入文本 */ public void inputText(List<St ...
- 玩转3D Swiper美女性感秀之思路分析总结
前言 继一次的3D魔方之后,这次利用CSS3的transform.translate.rotate.preserve-3d等结合JS的requestAnimationFrame.class带你一起玩转 ...
- H5 基于Web Storage 的客户端留言板
<!DOCTYPE html> <html> <head> <meta name="author" content="Yeeku ...
- Powershell同时使用可选强制参数
支持所有PS版本 在下面脚本函数中让可选参数和强制参数必须同时使用. 下面演示当可选参数出现,也必须使用这个强制参数. function Connect-Somewhere { [CmdletBind ...
- Android——图片轮播
Android技术——轮播功能 轮播需要什么? 答:实现图片与广告语展示.循环播发以及手动切换.支持加载本地与网络图片. 性能优化? 答:多张图片与指示器展示.自动与定时.循环播发.滑动流畅并且无卡顿 ...
- ubuntu fiddler firefox http网页不能访问 Secure Connection Failed
1. 给firefox导入fiddler的证书 1) fiddler:tools --> fiddler opthins --> https --> 勾选Capture HTTPS ...