FreeCodeCamp之数字转罗马数字

将给定的数字转换成罗马数字。所有返回的 罗马数字 都应该是大写形式。

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"。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(3999) 应该返回 "MMMCMXCIX"。

罗马数字对应1 I  5 V  10 X  50 L  100  C   500 D   1000 M其他900就是CM,1100就是MC其他类推。

提示给定是splice(),indexOf()和join()有想过用switch语句,来分成很多个分支,对应的值进入相应的分支,可以用除法加取正来获取每位对应的值,付给相应的分支,最后合成。但是写起来太大,执行起来反而更快。或者用forEach来循环,将数字和罗马数字构成两个一一对应的数组,从高位依次减,再获取index获得相应的罗马数字。

function convert(num) {
         var numbers=[1000,900,500,400,100,90,50,40,10,9,5,4,1];//用numbers中的值依次和item比较,大于item则返回对应的index返回Romans中对应字母加入字符串str中,num减去item
         var romans=[‘M‘,‘CM‘,‘D‘,‘DC‘,‘C‘,‘XC‘,‘L‘,‘XL‘,‘X‘,‘IX‘,‘V‘,‘IV‘,‘I‘];
         var str="";
         numbers.forEach(function(item,index,array){
                while(num>=item){
                         str+=romans[index];
                         num-=item;
                 }
         });

return str;
}

时间: 2024-10-10 09:49:49

FreeCodeCamp之数字转罗马数字的相关文章

第12题 数字转为罗马数字

罗马数字采用七个罗马字母作数字.即Ⅰ(1).X(10).C(100).M(1000).V(5).L(50).D(500). 一开始我按照10进制的思想来做,针对不同区间,编辑不同的罗马表达方式,比如1~9,10~90,100~900,1000~3000 以下是代码: public static String intToRoman(int num) { // String roman = ""; if(num<=0) return ""; if(num<=

python数字、字符串、字典 、列表 、元祖、集合的一些使用方法

数字: int     整数       作用:年龄.等级.薪资.身份证.QQ号 float 浮点型     作用:带小数 *****以后看到self当到没看见 --------------------------------------------------- 字符串: 作用:名字,性别,国籍,地址等描述信息 定义:在引号.双引号.三引号内,由一串字符组成 name='elroy' 只能存一个值 常用操作: 移除空白strip: name=input("username:") pr

Python基础总结(字符串常用,数字类型转换,基本运算符与流程控制)

一.字符串常用操作 #Python strip() 方法用于移除字符串头尾指定的字符(默认为空格) name='*egon**' print(name.strip('*'))#移除 name 变量对应的值两边的*,并输出处理结果 print(name.lstrip('*'))#移除 name 变量左边的*,并输出处理结果 print(name.rstrip('*'))#移除 name 变量右边的*,并输出处理结果 #startswith,endswith name='alex_SB' print

FCC 中级算法题 罗马数字转换器

Roman Numeral Converter 将给定的数字转换成罗马数字. 所有返回的 罗马数字 都应该是大写形式. Roman Numerals Array.splice() Array.indexOf() Array.join() 思路: (1)把所给的数字拆分成数组: (2)将其倒序之后利用索引与元素的关系将其转化为罗马字符(可以不倒序,不过就有些麻烦了): (3) 再把它倒回来,然后合并,就是原来数字的罗马数字表现. 知识点: (1)array=string.split(''); sp

数据类型总结(一)(数字,字符串)

数据类型总结 数字 字符串 列表 元组 字典 按照存值个数: 1个:数字,字符串 多个:列表,元组,字典 按照可变不可变: 可变:列表,字典 不可变:数字,字符串,元组 按照访问方式: 直接访问:数字 索引:字符串,列表,元组==>序列类型seq 映射:字典 一.数字 特性:1.只能存放一个值2.一经定义,不可更改3.直接访问分类:整型,长整型(只有python2中才有),浮点,复数 整型int:年级,年纪,等级,身份证号,qq号,手机号level=10Python的整型相当于C中的long型,

while补充,字符串和数字的内置方法

一.while循环的补充 while True: name=input('please input your name: ') password=input('please input your password: ') if name == 'egon' and password == '123': print('login successfull') while True: cmd=input('>>: ') if cmd == 'quit': break print('====>'

while循环,布尔类型,可变or不可变,数字,字符串,列表,元组,字典

while 循环 '''1.什么是循环? 循环即重复的过程 2.为什么要有循环 3.while循环的语法(又称之为条件循环) while 条件: 代码1 代码2 代码3 .... ''' # 注意:下述形式的死循环,会造成cpu的占用率过高# i=1# while True:# i+=1 #打印1-10# n=1# while True:# if n <= 10: #n=10# print(n)# n+=1# else:# break #打印1-10:改进1# n=1# while True:#

(数字类型,进制转换,字符串,列表)介绍和操作

数字类型 整型 用途:记录年龄.等级.号码等 定义方式如 age = 18 本质 # age = int(18) 整型只能存一个值而且是不可变类型 int()方法能将字符串转为整型 需要注意的是使用int只能转纯数字的字符串,有小数点也不行 浮点型 用途:记录身高.体重.薪资等 定义方式如 height= 185.1 本质 # height= float(185.1) 浮点型只能存一个值而且是不可变类型 float()方法能将字符串和整型转为浮点型 需要注意的是使用float方法只能转纯数字的字

罗马数字转阿拉伯数字

罗马数字转阿拉伯数字 1.罗马数字是位置计数吗?它的缺点是什么? 答:罗马数字不是位置技术,他的缺点:书写困难,规则繁杂,没有数字0 罗马数字包含以下七种字符:I, V, X, L,C,D 和 M.(python) 字符          数值 I             1 V             5 X             10 L             50 C             100 D             500 M             1000 2.将学号2