dict_roman = {'M':1000, 'D':500, 'C':100, 'L':50, 'X':10, 'V':5, 'I':1} roman = 0 s = "MCMIX" for i inrange(len(s)-1): if(dict_roman[s[i]] < dict_roman[s[i+1]]): roman = roman - dict_roman[s[i]] else: roman = roman + dict_roman[s[i]] roman = roman + dict_roman[s[-1]] print("roman=", roman)
難點
迴圈需要控制在倒數第二個字母停止,方便與最後一個字母做比較(e.g. IX)
最後要記得將最後一個字母值加入
最佳解法
Hash Table in python
1 2 3 4 5 6 7 8 9 10
classSolution: defromanToInt(self, s: str) -> int: roman={"I":1,"V":5,"X":10,"L":50,"C":100,"D":500,"M":1000} number=0 for i inrange(len(s)-1): if roman[s[i]] < roman[s[(i+1)]]: number-=roman[s[i]] else: number+=roman[s[i]] return number+roman[s[-1]]