JavaScript实现1-4000内阿拉伯数字转换为罗马数字
来源:互联网 发布:微信贷款申请系统源码 编辑:程序博客网 时间:2024/05/16 05:59
每日开始学习前,总是先来到算法题,提提神。
今天的这道,是这样滴:
convert(1006) 应该返回 “MVI”。
convert(1023) 应该返回 “MXXIII”。
convert(2014) 应该返回 “MMXIV”。
convert(3999) 应该返回 “MMMCMXCIX”。
铛铛,实现1-4000内的阿拉伯数字转换为罗马数字!
想做出这道题,首先你需要了解啥是罗马数字,我们查阅资料可见:
一、什么是罗马数字?
二、罗马数字记数方法
还是挺复杂滴,主要的点就是:1)连写的数字不能超过三次,也就是III只能写到3,想玩4,6,7...就得想招啦。2)大左小右为+,小左大右为-,具体数字表示起来取方便的那种。
既然有了上述规则,我们就可以写啦,先上一个复杂版。
超级复杂版:
var a=0; var b=0; var c=0; var d=0; var y=num.toString(); var newN=y.split("");//数字分开成数组['3','6'] var num1=newN.length; if(num1==1){ d=num; }else if(num1==2){ c=parseInt(newN[0]); d=parseInt(newN[1]); }else if(num1==3){ b=parseInt(newN[0]); c=parseInt(newN[1]); d=parseInt(newN[2]); }else if(num1==4){ a=parseInt(newN[0]); b=parseInt(newN[1]); c=parseInt(newN[2]); d=parseInt(newN[3]); } var rea=""; var reb=""; var rec=""; var red=""; for(i=1;i<=a;i++){ rea=rea+"M"; } if(b<4){ for(i=1;i<=b;i++){ reb=reb+"C"; } }else if(b==4){ reb="CD"; }else if(b<9){ reb="D"; for(i=1;i<=b-5;i++){ reb=reb+"C"; } }else if(b==9){ reb="CM"; } if(c<4){ for(i=1;i<=c;i++){ rec=rec+"X"; } }else if(c==4){ rec="XL"; }else if(c<9){ rec="L"; for(i=1;i<=c-5;i++){ rec=rec+"X"; } }else if(c==9){ rec="XC"; } if(d<4){ for(i=1;i<=d;i++){ red=red+"I"; } }else if(d==4){ red="IV"; }else if(d<9){ red="V"; for(i=1;i<=d-5;i++){ red=red+"I";} }else if(d==9){ red="IX"; } var result=rea+reb+rec+red; return result;}
简单来说,分出4位,把每一位的情况都做一个判断。(。・∀・)ノ゙嗨,您累不累哟。作为猿,我们的存在就是为了偷懒嘛。于是乎,只需要一个小小的方法,就可以避免一大串的判断。
超级简单版:
function convert(num) { var a=[["","I","II","III","IV","V","VI","VII","VIII","IX"], ["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],
["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"], ["","M","MM","MMM"]]; var i=a[3][Math.floor(num/1000)]; var j=a[2][Math.floor(num%1000/100)]; var k=a[1][Math.floor(num%100/10)]; var l=a[0][num%10]; return i+j+k+l; }convert(36);
这里用到了floor()方法,floor()方法用来“下舍取余”这样的话,每一位取到哪个数,就赋值对应数组种的罗马数字位置,搞定。so easy。
阅读全文
0 0
- JavaScript实现1-4000内阿拉伯数字转换为罗马数字
- 阿拉伯数字(1到4000)转化为罗马数字的javascript实现
- 罗马数字转换为阿拉伯数字
- 将阿拉伯数字转换为罗马数字
- 将阿拉伯数字转换为罗马数字
- JavaScript实现-阿拉伯数字转罗马数字
- 将1到1000的阿拉伯数字转换为罗马数字
- 【Leetcode-13】罗马数字转换为阿拉伯数字
- Javascript 将阿拉伯数字转换成罗马数字
- kotlin实现罗马数字和阿拉伯数字转换
- 罗马数字转换成阿拉伯数字
- 阿拉伯数字转换成罗马数字
- 阿拉伯数字转换成罗马数字
- 罗马数字转换成阿拉伯数字
- 12.阿拉伯数字转化为罗马数字1-3999
- 13.罗马数字转化为阿拉伯数字1-3999
- 阿拉伯数字转化为罗马数字
- 学以致用-Excel Arabic函数(将阿拉伯数字转换为罗马数字)的VBA实现
- 整个IT界可分为13块大领域
- LOFTERD18B542F16FF685FD684F427B4…
- Android学习笔记三十二之数据存储—文件存储读取
- sublime编译警告(sse,avx)及解决办法
- 将博客搬至CSDN
- JavaScript实现1-4000内阿拉伯数字转换为罗马数字
- 图论中DFS与BFS的区别、用法、详解…
- python
- 整理了一下以前写的东西,单条记载 现在看看还蛮有意思
- Monkey工具的使用
- java中的异常处理
- Java之工具类发送邮件
- 求两个非负整数的最大公约数
- Centos 7 & Centos 7 防火墙