12. Integer to Roman
题目简介
本题给我们一个参数 num,表示一个 0~3999 的数字
题目要求我们将 num 转换成罗马数字
解题思路
我们只要从大到小遍历罗马数字的值然后将对应的符号放入我们的答案中就可以了
Javascript
/**
* @param {number} num
* @return {string}
*/
var intToRoman = function (num) {
let res = ''
while (num > 0) {
switch (true) {
case num >= 1000:
res += 'M'
num -= 1000
break;
case num >= 900:
res += 'CM'
num -= 900
break;
case num >= 500:
res += 'D'
num -= 500
break;
case num >= 400:
res += 'CD'
num -= 400
break;
case num >= 100:
res += 'C'
num -= 100
break;
case num >= 90:
res += 'XC'
num -= 90
break;
case num >= 50:
res += 'L'
num -= 50
break;
case num >= 40:
res += 'XL'
num -= 40
break;
case num >= 10:
res += 'X'
num -= 10
break;
case num === 9:
res += 'IX'
num -= 9
break;
case num >= 5:
res += 'V'
num -= 5
break;
case num === 4:
res += 'IV'
num -= 4
break;
case num >= 1:
res += 'I'
num -= 1
break;
}
}
return res
};
或者:
/**
* @param {number} num
* @return {string}
*/
var intToRoman = function(num) {
const values = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
const symbols = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'];
let res = ''
for(let i=0;i<values.length;i++) {
while(num >= values[i]) {
res += symbols[i]
num -= values[i]
}
}
return res
};