码迷,mamicode.com
首页 > 其他好文 > 详细

6:Leetcode13:Roman to Integer笔记

时间:2018-02-02 23:19:17      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:数字   int   i+1   描述   style   pre   rom   obj   def   

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:解题感悟

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

6:Leetcode13:Roman to Integer笔记

标签:数字   int   i+1   描述   style   pre   rom   obj   def   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!