-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIntegerToRoman.java
More file actions
43 lines (41 loc) · 1.63 KB
/
IntegerToRoman.java
File metadata and controls
43 lines (41 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* 12. Integer to Roman
*
* Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.
* Symbol Value
* I 1
* V 5
* X 10
* L 50
* C 100
* D 500
* M 1000
* For example, 2 is written as II in Roman numeral, just two one's added together.
* 12 is written as XII, which is simply X + II.
* The number 27 is written as XXVII, which is XX + V + II.
* Roman numerals are usually written largest to smallest from left to right.
* However, the numeral for four is not IIII.
* Instead, the number four is written as IV.
* Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX.
* There are six instances where subtraction is used:
* I can be placed before V (5) and X (10) to make 4 and 9.
* X can be placed before L (50) and C (100) to make 40 and 90.
* C can be placed before D (500) and M (1000) to make 400 and 900.
* Given an integer, convert it to a roman numeral.
*/
class IntegerToRoman {
public String intToRoman(int theNum) {
int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] symbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
StringBuilder sb = new StringBuilder();
int index = 0;
while (theNum > 0) {
if (theNum >= values[index]) {
sb.append(symbols[index]);
theNum -= values[index];
} else
index++;
}
return sb.toString();
}
}