美文网首页程序员
FCC--Roman Numeral Converter(将给定

FCC--Roman Numeral Converter(将给定

作者: Ytsssss | 来源:发表于2017-09-06 21:27 被阅读0次

    问题:

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

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

    代码:

    function convert(num) {

          var number = [1000,900,500,400,100,90,50,40,10,9,5,4,1];

          var roman_number =["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"];

          var answer= '';

          number.forEach(function(item,index,array){

              while(num >= item){

                answer+=roman_number[index] ;

                 num -= item;//如果num大于number数组中的值时,将这个数对应的罗马数字加到answer中,然后减去这个数,直到结束。

             }

          });

          return answer;

    }

    解决思路:

    首先,了解罗马数字:罗马数字采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。

    如1,2,3都是用‘I’的个数表示,但是4用‘IX’表示,以此类推。

    看到这个问题第一个思路是建立二维数组romam[4][10],将1-9,10-90,100-900,1000-9000存入,然后利用余数得到结果。

    但是这个方法比较麻烦,这里简化了代码,思路是将这些特殊的数字和罗马数字一一对应的存在数组中,当输入的值num大于某一个数时一直循环下去,直到数组最后。主要是利用了1,2,3这种数的罗马数字是‘I’的倍数的特点。

    相关文章

      网友评论

        本文标题:FCC--Roman Numeral Converter(将给定

        本文链接:https://www.haomeiwen.com/subject/zcavjxtx.html