6:Leetcode13:Roman to Integer笔记

1:题目描述

将罗马数字转为十进制阿拉伯数字

2:题目分析

①Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)

②罗马数字中表示最大值的字母左侧数字为负,右侧为正

③表示负数的字母最多重复一次

3:解体过程

 1 class Solution(object):
 2     def romanToInt(self, s):
 3         """
 4         :type s: str
 5         :rtype: int
 6         """
 7         s_len=len(s)
 8         sum=0
 9         i=0
10         roman={'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000} #设置字典,便于取值
11         while i<s_len-1:
12             if roman[s[i]]<roman[s[i+1]]:#因为负值不重复,所以只比较紧邻的就可以了
13                 sum=sum-roman[s[i]]
14             else:
15                 sum=sum+roman[s[i]]
16             i=i+1
17         sum=sum+roman[s[s_len-1]]
18         return sum

4:解题感悟

发现负值不重复后代码就简洁很多了,想想自己期末考写的,真的很脑残呐┭┮﹏┭┮ 

原文地址:https://www.cnblogs.com/19991201xiao/p/8407186.html