# 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`