当前位置:网站首页>LeetCode刷题|13罗马数字转整数
LeetCode刷题|13罗马数字转整数
2022-04-23 05:58:00 【杜小瑞】
三个月前做的一道题,变成了今天的每日一题了,看样子不记录一下果然还是很快就会忘。
题目描述
地址:罗马数字转整数
解法一
虽然题目给了罗马数字转整数的六种特殊情况,但是实际上,本题的核心在于,将罗马数组转为整数的过程中,需要观察前后两个数的大小关系,如果前面一个数比后面的数小,那么久需要减去这个前面这个数,反之,就是要加上这个数。逻辑很简单,那么我们再把每一个字母代表的数字对应起来,然后遍历一遍给出的字符串就可以了。
class Solution:
def romanToInt(self, s: str) -> int:
prenum = self.getChar(s[0])
n = len(s)
num = 0
for i in range(1,n):
t = self.getChar(s[i])
if t > prenum:
num = num - prenum
else:
num = num + prenum
prenum = t
num += prenum
return num
def getChar(self, c):
if c == "I":
return 1
elif c == "V":
return 5
elif c == "X":
return 10
elif c == "L":
return 50
elif c == "C":
return 100
elif c == "D":
return 500
elif c == "M":
return 1000
else:
return 0
字母与数字的对于也可以直接使用字典来对应:
class Solution(object):
def romanToInt(self,s):
""" :type s: str :rtype: int """
num_dict = {
'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
sum = 0
prenum = num_dict[s[0]]
for i in range(1,len(s)):
num = num_dict[s[i]]
if prenum<num:
sum = sum - prenum
else:
sum = sum + prenum
prenum = num
return sum + prenum
版权声明
本文为[杜小瑞]所创,转载请带上原文链接,感谢
https://blog.csdn.net/DXRfighting/article/details/116853397
边栏推荐
猜你喜欢
随机推荐
DNA reveals surprise ancestry of mysterious Chinese mummies
柯里化实现函数连续调用计算累加和
ASP.NET CORE3.1 Identity注册用户后登录失败的解决方案
Decentralized Collaborative Learning Framework for Next POI Recommendation
.Net Core 下使用 Quartz —— 【1】快速开始
sql中的 IF 条件语句的用法
fdfs启动
【代码解析(5)】Communication-Efficient Learning of Deep Networks from Decentralized Data
SQL学习|集合运算
Promise(一)
mysql中sum (if)_mysql 中sum (if())
关于注解1
Leak detection and filling (I)
SQL学习|复杂查询
useCenterHook
微信小程序
js中的作用域与作用域链
ASP.NET CORE 依赖注入服务生命周期
.Net Core 下使用 Quartz —— 【4】作业和触发器之作业属性和异常
freeCodeCamp----time_calculator练习