题目:
给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
解题思路:
将每个数值对应的罗马字符存好,按从大到小的顺序减就可以了。
Java代码:
class Solution {
public String intToRoman(int num) {
int[] nums = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
String[] roman = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
String ans = "";
int pos = 0;
while(num>0) {
if(num>=nums[pos]) {
num -= nums[pos];
ans += roman[pos];
} else {
pos++;
}
}
return ans;
}
}