---
# System prepended metadata

title: 'leetcode #4：13-Roman to Integer'
tags: [python, leetcode]

---

# leetcode #4：13-Roman to Integer

給羅馬數字翻譯成整數

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

但當小的字母在大的字母的左邊，小的字母視為減號
小的字母只可能會有IXC三種

長度1-15，結果1-3999，不會有無效的字母輸入

## 思考

  先把字串變成list，數字大小跟左邊的比較，因此先從最右邊開始
  羅馬跟數字對應用字典列出
  最右邊當起始，跟左邊一個比較，如果左邊小就減去左邊，否則就加上左邊
  
```
class Solution:
    def romanToInt(self, s: str) -> int:
        
        dic= {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000}
        l=len(s)
        xx=list(s)
        i=l-2
        v=dic[xx[l-1]]
        a=v
        
        while i > -1:
            b= dic[xx[i]]
            if b < a:
                v = v - b
            else:
                v = v + b
            a = b
            i = i-1
        
        
        return v
```

## 檢討與複習

* xspace

  原來code使用while，i從大開始
  但也可以用for i in xspace(l-2,-1,-1)
  表示線性間隔(頭,尾,間隔) 不含尾，逆序的話間隔負號
  
* 字典

  a= {key:value, ....}
  
  a[key] = value
  
  
###### tags: `python` `leetcode`