JavaScript基础算法——Roman Numeral Converter(阿拉伯数转换罗马数字)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/funkstill/article/details/88835934

要求:

将给定的数字转换成罗马数字。

所有返回的 罗马数字 都应该是大写形式。

样本:

convert(2) 应该返回 "II"。

convert(3) 应该返回 "III"。

convert(4) 应该返回 "IV"。

convert(5) 应该返回 "V"。

convert(9) 应该返回 "IX"。

convert(12) 应该返回 "XII"。

convert(16) 应该返回 "XVI"。

convert(29) 应该返回 "XXIX"。

convert(44) 应该返回 "XLIV"。

扫描二维码关注公众号,回复: 5693956 查看本文章

convert(45) 应该返回 "XLV"。

convert(68) 应该返回 "LXVIII"。

convert(83) 应该返回 "LXXXIII"。

convert(97) 应该返回 "XCVII"。

convert(99) 应该返回 "XCIX"。

convert(500) 应该返回 "D"。

convert(501) 应该返回 "DI"。

convert(649) 应该返回 "DCXLIX"。

convert(798) 应该返回 "DCCXCVIII"。

convert(891) 应该返回 "DCCCXCI"。

convert(1000) 应该返回 "M"。

convert(1004) 应该返回 "MIV"。

convert(1006) 应该返回 "MVI"。

convert(1023) 应该返回 "MXXIII"。

convert(2014) 应该返回 "MMXIV"。

convert(3999) 应该返回 "MMMCMXCIX"。

解法:

function convert(num) {
  var numArr = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000];
  var romArr = ["I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"];
  var romStr = "";
  if(num>0){//只适用于正数
    var index = numArr.length;//从最高位开始
    while(index>=0){//如果还没到个位以后
      if(num>=numArr[index]){
        num-=numArr[index];
        romStr+=romArr[index];
      }else{
        index--;
      }
    }
  }
  return romStr;
}

convert(36);

猜你喜欢

转载自blog.csdn.net/funkstill/article/details/88835934