最近更新频率小了,感觉这样下去就荒废了,在做好本职工作的前提下,还是应该有所提升和进步,再次开始刷领扣吧~定个规矩,还是先自己想自己写,然后再看人家的做法,即使自己写的烂也好歹是自己的想法,今天做了整数转罗马数字,我是这么写的,有点繁琐,不过还算一遍对了
/**
* @param {number} num
* @return {string}
*/
function handleThousandBit(thousandBit){
var index = 0;
var st = ''
for(index;index<thousandBit;index++){
st+='M'
}
return st;
}
function handleHundredBit(hundredNum){
let st='';
let num = hundredNum;
let index = 0;
if(hundredNum === 900){
return 'CM'
}else if(hundredNum === 400){
return 'CD'
}else if(hundredNum >= 500){
st+='D'
num = hundredNum - 500;
}
let maxlen = parseInt((num%1000)/100)
for(index ;index < maxlen;index++){
st+='C'
}
return st;
}
function handleTenNum(handleTenNum){
let st='';
let num = handleTenNum;
let index = 0;
if(handleTenNum === 90){
return 'XC'
}else if(handleTenNum === 40){
return 'XL'
}else if(handleTenNum >= 50){
st+='L'
num = handleTenNum - 50;
}
let maxlen = parseInt((num%100)/10)
for(index ;index < maxlen;index++){
st+='X'
}
return st;
}
function handleLastNum(lastNum){
let st='';
let num = lastNum;
let index = 0;
if(lastNum === 9){
return 'IX'
}else if(lastNum === 4){
return 'IV'
}else if(lastNum >= 5){
st+='V'
num = lastNum - 5;
}
let maxlen = parseInt(num % 10)
for(index ;index < maxlen;index++){
st+='I'
}
return st;
}
利用贪心算法的,自己敲了一遍,感觉到被碾压。。哈哈
var intToRoman = function(num) {
let nums = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
let romans = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
let index = 0;
let res = '';
while(index < 13){
while(num >= nums[index]){
num = num - nums[index];
res += romans[index];
}
index++;
}
return res
}