leetcode 13. 罗马数字转整数

罗马转整数要考虑先后顺序
当排在前面的罗马数字大于后面的罗马数字,就正常化成阿拉伯数字相加
如果小,那就是将小的数转成负数,再加就ok。
但也是需要模拟的,就是哪一字母代表哪个数值。

class Solution:
    def romanToInt(self, s: str) -> int:
        num_list = [0 for i in range(len(s))]
        for i in range(len(s)):
            if s[i] == "M":
                num_list[i] = 1000
            if s[i] == "D":
                num_list[i] = 500
            if s[i] == "C":
                num_list[i] = 100
            if s[i] == "L":
                num_list[i] = 50
            if s[i] == "X":
                num_list[i] = 10
            if s[i] == "V":
                num_list[i] = 5
            if s[i] == "I":
                num_list[i] = 1
        
        i = 0
        sum = 0
        while i < len(num_list) - 1:
            if num_list[i] < num_list[i+1]:
                sum -= num_list[i]
            else:
                sum += num_list[i]
            i += 1
        sum += num_list[-1]
        return sum

你可能感兴趣的:(左神刷题班top150,windows,linux,服务器)