Interger To Roman

Problem

Given an integer, convert it to a roman numeral.

The number is guaranteed to be within the range from 1 to 3999.

Example

4 -> IV

12 -> XII

21 -> XXI

99 -> XCIX

Roman numerals:

Python

 1 class Solution:
 2     # @param {integer} num
 3     # @return {string}
 4     def parse(self, digit, index):
 5         NUMS = {
 6             1: 'I',
 7             2: 'II',
 8             3: 'III',
 9             4: 'IV',
10             5: 'V',
11             6: 'VI',
12             7: 'VII',
13             8: 'VIII',
14             9: 'IX',
15         }
16         ROMAN = {
17             'I': ['I', 'X', 'C', 'M'],
18             'V': ['V', 'L', 'D', '?'],
19             'X': ['X', 'C', 'M', '?']
20         }
21         
22         s = NUMS[digit]
23         return s.replace('X', ROMAN['X'][index]).replace('I', ROMAN['I'][index]).replace('V', ROMAN['V'][index])
24         
25     def intToRoman(self, num):
26         s = ''
27         index = 0
28         while num != 0:
29             digit = num % 10
30             if digit != 0:
31                 s = self.parse(digit, index) + s
32             num = num / 10
33             index += 1
34         return s

 

posted @ 2016-04-19 22:15  随缘剑客  阅读(223)  评论(0)    收藏  举报