您的位置:首页 > 其它

LeetCode: 011 - Roman to Integer

2016-01-06 01:22 323 查看

Roman to Integer

比较喜欢用到字符串处理的题

我的解法

class Solution(object):
roman = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}

def turn(self, s):
roman = self.roman
if len(s) == 1:
return roman[s]
else:
return roman[s[-1]] - sum (map(lambda i: roman[i], s[:-1]))

def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
# roman = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X']
roman = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
# 3999 = 'M M M CM XC IX'
# 3529 = 'M M M V X X IX'
dList = []
i = 0
while i < len(s):
j = 1
while j < 4:
if i+j >= len(s):
dList.append(s[i:i+j])
i += j
break
if roman[s[i + j -1]] == roman[s[i+j]] or \
roman[s[i + j - 1]] > roman[s[i+j]]:
dList.append(s[i: i+j])
i += j
break
j += 1
#i += 1
return sum(map(self.turn, dList))


完全称得上是简单粗暴并且无脑。

因此效率非常差劲

题外话

这个是补1月2日的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: