题目:
给你一个整数,将其转为罗马数字。
1 <= num <= 3999 (取值范围)
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
示例1:
输入: num = 3
输出: "III"
示例2:
输入: num = 4
输出: "IV"
示例3:
输入: num = 9
输出: "IX"
示例4:
输入: num = 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.
示例5:
输入: num = 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.
解答:(mine)
var intToRoman = function(num) {
let arr = [];
if(num > 1000) {
let t = 1000
for(let i =0; i<4; i++){
let n = Math.floor(num / t)*t
arr.push(n)
t /= 10
num = num - n;
}
}
if(num > 100 && num <= 1000) {
let t = 100
for(let i =0; i<3; i++){
let n = Math.floor(num / t)*t
arr.push(n)
t /= 10
num = num - n;
}
}
if(num > 10 && num <= 100) {
let t = 10
for(let i =0; i<2; i++){
let n = Math.floor(num / t)*t
arr.push(n)
t /= 10
num = num - n;
}
}
if(num <= 10 && num > 0) {
arr.push(num)
}
let arr1 = []
arr.forEach(item =>{
if(item >=1000) { //4位的
let result1 = ''
if(item < 4000){
let n = item / 1000 ;
for(let i = 0; i<n;i++){
result1 += 'M'
}
}
arr1.push(result1)
}
if(item >=100 && item < 1000) { //3位的
let result2 = ''
if(item < 400){
let n = item / 100 ;
for(let i = 0; i<n;i++){
result2 += 'C'
}
}
if(item == 400){
result2 = 'C' + 'D'
}
if(item == 500){
result2 = 'D'
}
if(item>500 && item<900) {
let n = (item-500) / 100 ;
for(let i = 0; i<n;i++){
result2 += 'C'
}
result2 = 'D' + result2
}
if(item == 900) {
result2 = 'C'+'M'
}
arr1.push(result2)
}
if(item >=10 && item < 100) { //2位的
let result3 = ''
if(item < 40){
let n = item / 10 ;
for(let i = 0; i<n;i++){
result3 += 'X'
}
}
if(item == 40){
result3 = 'X' + 'L'
}
if(item == 50){
result3 = 'L'
}
if(item>50 && item<90) {
let n = (item-50) / 10 ;
for(let i = 0; i<n;i++){
result3 += 'X'
}
result3 = 'L' + result3
}
if(item == 90) {
result3 = 'X'+'C'
}
arr1.push(result3)
}
if(item >=1 && item < 10) { //1位的
let result4 = ''
if(item < 4){
let n = item / 1 ;
for(let i = 0; i<n;i++){
result4 += 'I'
}
}
if(item == 4){
result4 = 'I' + 'V'
}
if(item == 5){
result4 = 'V'
}
if(item>5 && item<9) {
let n = (item-5) / 1 ;
for(let i = 0; i<n;i++){
result4 += 'I'
}
result4 = 'V' + result4
}
if(item == 9) {
result4 = 'I'+'X'
}
arr1.push(result4)
}
})
return arr1.join('')
};
解答:(no-mine)
var intToRoman = function(num) {
const valueSymbols = [[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"]];
const res=[]
for([value,symbol] of valueSymbols){
while(num>=value){
res.push(symbol)
num-=value
}
}
return res.join('')
};
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/integer-to-roman
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。