Skip to content

Commit 8bb1bd2

Browse files
committed
feat: update leetcode solutions: No.0012. Integer to Roman
1 parent 98bb386 commit 8bb1bd2

File tree

4 files changed

+68
-11
lines changed

4 files changed

+68
-11
lines changed

solution/0000-0099/0012.Integer to Roman/README.md

+25-2
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,45 @@ M 1000</pre>
6060

6161
<!-- 这里可写通用的实现逻辑 -->
6262

63+
贪心算法实现。
64+
6365
<!-- tabs:start -->
6466

6567
### **Python3**
6668

6769
<!-- 这里可写当前语言的特殊实现逻辑 -->
6870

6971
```python
70-
72+
class Solution:
73+
def intToRoman(self, num: int) -> str:
74+
nums = [(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')]
75+
res = []
76+
for k, v in nums:
77+
while num >= k:
78+
num -= k
79+
res.append(v)
80+
return ''.join(res)
7181
```
7282

7383
### **Java**
7484

7585
<!-- 这里可写当前语言的特殊实现逻辑 -->
7686

7787
```java
78-
88+
class Solution {
89+
public String intToRoman(int num) {
90+
int[] nums = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
91+
String[] romans = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
92+
StringBuilder sb = new StringBuilder();
93+
for (int i = 0; i < nums.length; ++i) {
94+
while (num >= nums[i]) {
95+
num -= nums[i];
96+
sb.append(romans[i]);
97+
}
98+
}
99+
return sb.toString();
100+
}
101+
}
79102
```
80103

81104
### **...**

solution/0000-0099/0012.Integer to Roman/README_EN.md

+23-2
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,34 @@ M 1000</pre>
8989
### **Python3**
9090

9191
```python
92-
92+
class Solution:
93+
def intToRoman(self, num: int) -> str:
94+
nums = [(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')]
95+
res = []
96+
for k, v in nums:
97+
while num >= k:
98+
num -= k
99+
res.append(v)
100+
return ''.join(res)
93101
```
94102

95103
### **Java**
96104

97105
```java
98-
106+
class Solution {
107+
public String intToRoman(int num) {
108+
int[] nums = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
109+
String[] romans = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
110+
StringBuilder sb = new StringBuilder();
111+
for (int i = 0; i < nums.length; ++i) {
112+
while (num >= nums[i]) {
113+
num -= nums[i];
114+
sb.append(romans[i]);
115+
}
116+
}
117+
return sb.toString();
118+
}
119+
}
99120
```
100121

101122
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
class Solution {
2-
private final String[] M = {"", "M", "MM", "MMM"};
3-
private final String[] C = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
4-
private final String[] X = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
5-
private final String[] I = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
62
public String intToRoman(int num) {
7-
return M[num / 1000] + C[(num % 1000) / 100] + X[(num % 100) / 10] + I[num % 10];
3+
int[] nums = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
4+
String[] romans = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
5+
StringBuilder sb = new StringBuilder();
6+
for (int i = 0; i < nums.length; ++i) {
7+
while (num >= nums[i]) {
8+
num -= nums[i];
9+
sb.append(romans[i]);
10+
}
11+
}
12+
return sb.toString();
813
}
9-
}
10-
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def intToRoman(self, num: int) -> str:
3+
nums = [(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')]
4+
res = []
5+
for k, v in nums:
6+
while num >= k:
7+
num -= k
8+
res.append(v)
9+
return ''.join(res)

0 commit comments

Comments
 (0)