最近再刷leetcode,除了链表之外的都用python 实现,贴出一些代码,希望指正.
问题描述:
罗马数字转为整数
在没做这个题之前我想大家应该对罗马数字都没什么了解吧.
I = 1;
V = 5;
X = 10;
L = 50;
C = 100;
D = 500;
M = 1000;
其中每两个阶段的之间有一个减法的表示,比如900=CM, C写在M前面表示M-C。
解决方案:
先对字符从小到大进行编号.
难点是再遍历的时候遇到小的再前面大的再后面计算一次减法,然后后退两个.
实现代码
class Solution(object):
def romanToInt(self, s):
"""
:type s: str
:rtype: int
"""
s = s +'I'
list1 = ["I", "V", "X", "L", "C", "D", "M"]
list2 = [1, 5, 10, 50, 100, 500, 1000]
list_all = [list1, list2]
num_sum = 0
n = 1
while n < len(s):
index1 = list1.index(s[n - 1])
index2 = list1.index(s[n])
# print(index1, index2)
if index1 < index2:
num_sum = num_sum + (list2[index2] - list2[index1])
n = n + 2
else:
num_sum = num_sum + list2[index1]
n = n + 1
# print(num_sum)
return num_sum
solution = Solution()
print(solution.romanToInt("DCXXI"))
网友评论