Skip to content

Commit 4ec8746

Browse files
author
ChienkuChen
committed
Add 12
1 parent 814ef50 commit 4ec8746

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

src/_12/12.integer-to-roman.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package _12;
2+
3+
class Solution {
4+
public String intToRoman(int num) {
5+
int[] values = new int[]{1000, 500, 100, 50, 10, 5, 1};
6+
char[] symbols = new char[]{'M', 'D', 'C', 'L', 'X', 'V', 'I'};
7+
8+
StringBuilder stringBuilder = new StringBuilder();
9+
10+
for (int i = 0; i < values.length; i += 2) {
11+
if (values[i] > num)
12+
continue;
13+
14+
int tmp = num / values[i];
15+
16+
if (1 <= tmp && tmp <= 3) {
17+
while (tmp != 0) {
18+
stringBuilder.append(symbols[i]);
19+
num -= values[i];
20+
tmp--;
21+
}
22+
} else if (tmp == 4) {
23+
stringBuilder.append(symbols[i]).append(symbols[i - 1]);
24+
num -= values[i - 1];
25+
num += values[i];
26+
27+
} else if (5 <= tmp && tmp <= 8) {
28+
stringBuilder.append(symbols[i - 1]);
29+
num -= values[i - 1];
30+
31+
tmp -= 5;
32+
while (tmp != 0) {
33+
stringBuilder.append(symbols[i]);
34+
num -= values[i];
35+
tmp--;
36+
}
37+
} else if (tmp == 9) {
38+
stringBuilder.append(symbols[i]).append(symbols[i - 2]);
39+
num -= values[i - 2];
40+
num += values[i];
41+
}
42+
}
43+
44+
return stringBuilder.toString();
45+
}
46+
47+
public static void main(String[] args) {
48+
System.out.println(new Solution().intToRoman(3));
49+
System.out.println(new Solution().intToRoman(4));
50+
System.out.println(new Solution().intToRoman(9));
51+
System.out.println(new Solution().intToRoman(58));
52+
System.out.println(new Solution().intToRoman(1994));
53+
}
54+
}

0 commit comments

Comments
 (0)