BiruLyu
7/28/2017 - 11:02 PM

## 12. Integer to Roman(#).java

``````class Solution(object):
def intToRoman(self, num):
"""
:type num: int
:rtype: str
"""
numerals = {
1000 : 'M',
900 : 'CM',
500 : 'D',
400 : 'CD',
100 : 'C',
90 : 'XC',
50 : 'L',
40 : 'XL',
10 : 'X',
9 : 'IX',
5 : 'V',
4 : 'IV',
1 : 'I',
}

segment = [1000,900,500,400,100,90,50,40,10,9,5,4,1];
res = "";

for i in segment:
temp = num / i;
res += temp * numerals[i];
num -= temp * i;

return res;
``````
``````public class Solution {
public static final int[] intDict = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
public static final String[] romanDict = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};

/**
* Recursion
* Go through the dict, if num >= dict, insert it to head
* Pass rest of the integer to next recursion
*/
public String intToRoman(int num) {
for (int i = 0; i < intDict.length; i++) {
if (intDict[i] <= num) {
return romanDict[i] + intToRoman(num - intDict[i]);
}
}
return ""; // Note the return statement
}
}``````
``````public class Solution {
public String intToRoman(int num) {
int[] keys = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] values = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};

StringBuilder sb = new StringBuilder();

for (int i = 0; i < keys.length; i++) {
while (num >= keys[i]) {
num -= keys[i];
sb.append(values[i]);
}
}
return sb.toString();
}
}``````