python LeetCode 테스트 기록 13

카테고리: 단순

문제 번호: 13개의
로마 숫자에는 I, V, X, L, C, D 및 M의 7개 문자가 포함됩니다.

문자
I 1
V
5 _ _ _ 12는 XII로 표기되며, 이는 X + II입니다. 27은 XXVII로 쓰면 XX+V+II이다.




일반적으로 로마 숫자의 작은 숫자는 큰 숫자의 오른쪽에 있습니다. 하지만 특별한 경우도 있는데, 예를 들어 4는 IIII으로 쓰지 않고 IV로 씁니다. 숫자 1은 숫자 5의 왼쪽에 있으며 큰 숫자 5에서 숫자 1, 즉 값 4를 뺀 숫자를 나타냅니다. 마찬가지로 숫자 9는 IX로 표시됩니다. 이 특별 규칙은 다음 6가지 상황에만 적용됩니다.

I는 V(5)와 X(10)의 왼쪽에 위치하여 4와 9를 나타낼 수 있습니다.
X를 L(50)과 C(100) 왼쪽에 배치하면 40과 90을 나타낼 수 있습니다.
C는 D(500), M(1000) 왼쪽에 배치하여 400과 900을 나타낼 수 있습니다.
로마 숫자가 주어지면 이를 정수로 변환합니다.

암호

class Solution:
    def romanToInt(self, s: str) -> int:
        sum = 0
        i = 0
        roman_dict ={
    
    'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000, 'IV':4, 'IX':9, 'XL':40, 'XC':90, 'CD':400, 'CM':900}
        while i < len(s):
            if i < len(s) - 1 and roman_dict[s[i]] < roman_dict[s[i + 1]]:
                sum += roman_dict[s[i:i+2]]
                i += 2
            else:
                sum += roman_dict[s[i]]
                i += 1
        return sum

おすすめ

転載: blog.csdn.net/weixin_46483785/article/details/132838894