LeetCode12. 整數轉羅馬數字
阿新 • • 發佈:2018-12-24
題目大意:將一個1到3999範圍內的整數轉為羅馬數字
題目分析:首先熟悉轉換規則,然後可以使用兩個list儲存對應的對映關係,然後每次從大到小看num是否大於1000,大於900,大於500,若在某個區間的話,就將羅馬數字加進來,num減去相應的數值,直到num為0
程式碼展示:
class Solution(object): def intToRoman(self, num): intForm = [1000,900,500,400,100,90,50,40,10,9,5,4,1] romanForm = ["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"] string = "" while num!=0: for i in range(0,len(intForm)): if num>=intForm[i]: string += romanForm[i] num -= intForm[i] break return string
方法二:不使用兩個陣列來儲存對應關係,使用if else的結構,只是邏輯上稍微複雜一點。
程式碼展示:
class Solution(object): def intToRoman(self, num): result = [] while num!=0: num = self.transform(result,num) string = "" for i in range(0,len(result)): string += result[i] return string def transform(self,result,num): if num>=1000: result.append('M') num -= 1000 elif num>=900: result.append("CM") num -= 900 elif num>=500: result.append('D') num -= 500 elif num>=400: result.append("CD") num -= 400 elif num>=100: result.append('C') num -= 100 elif num>=90: result.append("XC") num -= 90 elif num>=50: result.append('L') num -= 50 elif num>=40: result.append("XL") num -= 40 elif num>=10: result.append('X') num -= 10 elif num>=9: result.append("IX") num -= 9 elif num>=5: result.append('V') num -= 5 elif num>=4: result.append("IV") num -= 4 else: result.append('I') num -= 1 return num