博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第四天-打开
阅读量:7211 次
发布时间:2019-06-29

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

话不多说,直接上题目:

实现代码如下:

class Solution(object):    def romanToInt(self, s):        l = list(s)        print(l)        num = 0        biaozhiwei = False        for i in range(len(s)):            if biaozhiwei:                biaozhiwei = False                continue            if l[i] == 'I':                if i+1 < len(s) and l[i+1] == 'V':                    num = num + 4                    biaozhiwei = True                elif i+1 < len(s) and l[i+1] == 'X':                    num = num + 9                    biaozhiwei = True                else:                    num = num + 1            if l[i] == 'X':                if i+1 < len(s) and l[i+1] == 'L':                    num = num + 40                    biaozhiwei = True                elif i+1 < len(s) and l[i+1] == 'C':                    num = num + 90                    biaozhiwei = True                else:                    num = num + 10            if l[i] == 'C':                if i+1 < len(s) and l[i+1] == 'D':                    num = num + 400                    biaozhiwei = True                elif i+1 < len(s) and l[i+1] == 'M':                    num = num + 900                    biaozhiwei = True                else:                    num = num + 100            if l[i] == 'V':                num = num + 5            if l[i] == 'L':                num = num + 50            if l[i] == 'D':                num = num + 500            if l[i] == 'M':                num = num + 1000        return num复制代码

通过不停的判断每一位,加相应的值,如果是I,X,C则需要判断后续字母,如果后续字母是特殊字符,则需要加相应的值,而且在下次循环的时候,需要跳过。

这种方式太麻烦了,需要做很多的判断,还要做特殊处理,不是一个好的选择,通过观察数字的特殊规则,可以发现一个规律,如果后续字母所代表的数字,大于当前字母,则当前位和后续位合起来表示的数字,正好是后续字母代表的数字,减去当前数字,这样代码就能够简洁一些了:

class Solution(object):    def romanToInt(self, s):        a = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}        num = 0        for i  in range(len(s)):            if i < len(s)-1 and a[s[i]]

通过一次判断,就能概括所有的特殊情况,nice!

转载地址:http://iuwym.baihongyu.com/

你可能感兴趣的文章
Java 内部类的阐述
查看>>
redis-大key寻找
查看>>
EF 数据查询(更改默认排序)
查看>>
求连续子数组的最大和
查看>>
SpringMVC最简单配置应用
查看>>
jQuery与Zepto的异同
查看>>
jsp注册页面的省份联动(网上copy别人的,然后自己弄了一下才知道怎么用)
查看>>
CRC检错技术原理
查看>>
读取Ini文件字段
查看>>
asp获取来源Url
查看>>
第一次实验
查看>>
Redis基础操作
查看>>
clob大数据转换为多行数据
查看>>
bootstrap的流式布局
查看>>
如何通过线程池异步调用
查看>>
Squid配置详解
查看>>
070104_微积分:随机变量及其分布(二项分布,均匀分布,正态分布)
查看>>
LeetCode – Refresh – Binary Tree Zigzag Level Order Traversal
查看>>
python操作三大主流数据库(13)python操作redis之新闻项目实战①新闻数据的导入
查看>>
2013夏,iDempiere来了 - v1.0c Installers (Devina LTS Release) 2013-06-27
查看>>